hschumann2/TempleOS-Source-Code
0847
1 2#help_index "Windows"3 4class CWallPaperGlbls5{6 I64 last_calc_idle_cnt,last_swap_cnter[MP_PROCESSORS_NUM];7 F64 last_calc_idle_delta_time;8 U8 top_line[STR_LEN];9 Bool record;10} *wall=CAlloc(sizeof(CWallPaperGlbls));11wall->last_calc_idle_delta_time=1.0;12 13class CTaskWallPaperData14{15 I64 alloced_u8s,used_u8s;16 U8 caller_stk[STR_LEN-$];17};18 19U0 WallPaper(CTask *_task)20{21 I64 i,j,l=TEXT_ROWS-1;22 CTask *task;23 CTaskWallPaperData *wpd;24 CHashTable *old_hash=Fs->hash_table;25 CCPU *c;26 CDateStruct ds;27 U8 *st;28 _task->text_attr=BLUE<<4+WHITE;29 if (sys_data_bp) {30 TextPrint(Fs,0,l--,BLUE<<4+YELLOW,31 "%010X/%010X %010X/%010X%12td%12td%12td",32 sys_data_bp->used_u8s,sys_data_bp->alloced_u8s,33 sys_code_bp->used_u8s,sys_code_bp->alloced_u8s,34 cmp.compiled_lines,blkdev.read_cnt,blkdev.write_cnt);35 TextPrint(Fs,0,l--,BLUE<<4+WHITE,36 "______Data_Heap______ ______Code_Heap______ "37 "___Lines___ ___Reads___ __Writes___");38 } else {39 TextPrint(Fs,0,l--,BLUE<<4+WHITE,40 "%010X/%010X%12td%12td%12td",41 sys_code_bp->used_u8s,sys_code_bp->alloced_u8s,42 cmp.compiled_lines,blkdev.read_cnt,blkdev.write_cnt);43 TextPrint(Fs,0,l--,BLUE<<4+WHITE,44 "____CodeData_Heap____ "45 "___Lines___ ___Reads___ ___Writes__");46 }47 TextPrint(Fs,0,l--,BLUE<<4+WHITE,"ProgressBars:%016X %016X %016X %016X",48 progress1,progress2,progress3,progress4);49 for (i=0;i<mp_cnt;i++) {50 c=&cpu_structs[i];51 if (winmgr.t->calc_idle_cnt!=wall->last_calc_idle_cnt) {52 wall->last_calc_idle_delta_time=winmgr.t->calc_idle_delta_time;53 wall->last_swap_cnter[i]=winmgr.t->last_swap_cnter[i];54 winmgr.t->last_swap_cnter[i]=c->swap_cnter;55 }56 57 task=c->seth_task;58 do {59 wpd=&task->wallpaper_data;60 if (!TaskValidate(task)) break;61 if (!(winmgr.updates&31)) {62 if (c==Gs)63 Fs->hash_table=task->hash_table;64 else //precaution65 Fs->hash_table=old_hash;66 StrPrint(wpd->caller_stk," %-18tp %-18tp %-18tp %-18tp",67 TaskCaller(task,0),TaskCaller(task,1),68 TaskCaller(task,2),TaskCaller(task,3));69 }70 TextPrint(Fs,0,l--,BLUE<<4+YELLOW,wpd->caller_stk);71 j=UnusedStk(task);72 if (j<0)73 Panic("Stk Overflow",task);74 if (!(winmgr.updates&31)) {75 wpd->alloced_u8s=TaskMemAlloced(task);76 wpd->used_u8s =TaskMemUsed(task);77 }78 TextPrint(Fs,0,l--,BLUE<<4+BROWN,79 " %-18ts #%08X %010X %010X/%010X %04X:%02tX:%08X",80 task->task_title,task,j,wpd->used_u8s,wpd->alloced_u8s,81 task->task_flags,task->display_flags,task->win_inhibit);82 if (!TaskValidate(task)) break;83 task=task->next_task;84 } while (task!=c->seth_task);85 TextPrint(Fs,0,l--,BLUE<<4+WHITE,"CPU%02X %2tf%% ContextSwaps/s:%9,d",i,86 100.0*(1.0-c->idle_factor),ToI64((winmgr.t->last_swap_cnter[i]87 -wall->last_swap_cnter[i])/wall->last_calc_idle_delta_time));88 }89 TextPrint(Fs,0,l--,BLUE<<4+WHITE,90 " ___Description____ #__Task__ UnusedStk_ _UsedMem__/_AllocMem_ "91 "______Flags_____");92 93 if (!(winmgr.updates&31) || !*wall->top_line) {94 Date2Struct(&ds,Now+local_time_offset);95 i=sys_code_bp->alloced_u8s-sys_code_bp->used_u8s;96 if (sys_data_bp)97 i+=sys_data_bp->alloced_u8s-sys_data_bp->used_u8s;98 StrPrint(wall->top_line,99 "%3tZ %02d/%02d %02d:%02d:%02d FPS:%2tf Mem:%010X CPU",100 ds.day_of_week,"ST_DAYS_OF_WEEK",ds.mon,ds.day_of_mon,101 ds.hour,ds.min,ds.sec,winmgr.fps,i);102 }103 TextPrint(Fs,0,0,BLUE<<4+WHITE,wall->top_line);104 105 if (wall->record)106 TextPrint(Fs,44-4,0,BLUE<<4+RED,"*");107 for (i=0;i<mp_cnt;i++) {108 c=&cpu_structs[i];109 if (i&1)110 TextPrint(Fs,44+i*2,0,BLUE<<4+WHITE,"%2tf",100.0*(1.0-c->idle_factor));111 else112 TextPrint(Fs,44+i*2,0,BLUE<<4+YELLOW,"%2tf",100.0*(1.0-c->idle_factor));113 }114 115 st=ScanCode2KeyName(kbd.last_down_scan_code);116 TextPrint(Fs,80-18,0,BLUE<<4+YELLOW,"%18ts",st);117 Free(st);118 119 Fs->hash_table=old_hash;120 wall->last_calc_idle_cnt=winmgr.t->calc_idle_cnt;121}122 123<1>/* Graphics Not Rendered in HTML */124 125 126 127U0 DrawTermBttn(CDC *dc,CCtrl *c)128{129 if (Blink)130 Sprite3(dc,c->left,c->top,0,<1>);131}132 133U0 LeftClickTermBttn(CCtrl *,I64,I64,Bool down)134{135 if (down)136 User;137}138 139CCtrl *TermBttnNew()140{141 I64 min_x,max_x,min_y,max_y;142 CCtrl *c=ACAlloc(sizeof(CCtrl));143 144 c->win_task=sys_winmgr_task;145 c->flags=CTRLF_SHOW;146 c->type=CTRLT_GENERIC;147 c->draw_it=&DrawTermBttn;148 c->left_click=&LeftClickTermBttn;149 150 SpriteExtents(<1>,&min_x,&max_x,&min_y,&max_y);151//min must be zero152 c->left=sys_winmgr_task->pix_width-(max_x-min_x+1);153 c->right=c->left+(max_x-min_x+1)-1;154 c->top=sys_winmgr_task->pix_height-(max_y-min_y+1);155 c->bottom=c->top+(max_y-min_y+1)-1;156 157 QueIns(c,sys_winmgr_task->last_ctrl);158 TaskDerivedValsUpdate(sys_winmgr_task);159 160 return c;161}162 163U0 WallPaperInit()164{165 TermBttnNew;166 gr.fp_wall_paper=&WallPaper;167}168 