diff options
| author | Miguel <m.i@gmx.at> | 2018-09-29 19:57:52 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-09-29 19:57:52 +0200 |
| commit | 75433d155c152b809e9f25b1099fc06d6106308b (patch) | |
| tree | f4f84309e6cf2aa9bc0d9df5ae532b94a60fea0f /kernel/scheduler.c | |
| parent | 73e80bf4b6c69b92a04b525f114a072a1c4b0d3a (diff) | |
improving window compositor
Diffstat (limited to 'kernel/scheduler.c')
| -rw-r--r-- | kernel/scheduler.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/kernel/scheduler.c b/kernel/scheduler.c index e5cdec7..ff46889 100644 --- a/kernel/scheduler.c +++ b/kernel/scheduler.c @@ -176,7 +176,7 @@ volatile uint32_t scheduler_run(uint32_t oldesp,uint32_t preference) for(int i=0;i<MAX_TASKS;i++) { int idx=(last_task[cpu]+1+i)%MAX_TASKS; // schedule round robin style - if(preference==-1&&idx==0)continue; +// if(preference==-1&&idx==0)continue; if(idx==preference||idx==2)continue;// skip sleeper and preferred tasks here. @@ -229,6 +229,8 @@ void scheduler_func() volatile int add_task(uint32_t parent_pid,uint32_t vmem, bool thread) { + static bool first=true; + uint32_t parent=task_runs(parent_pid); uint32_t cpu=smp_get(SMP_APIC_ID); @@ -265,7 +267,11 @@ volatile int add_task(uint32_t parent_pid,uint32_t vmem, bool thread) stack[12]=0x1; stack[13]=0; // this task returns pid=0 to the caller - if(!thread)compositor_add_window(vmem); + if(!thread&&first) + { + compositor_add_window(vmem); + //first=false; + } return task_list[cpu][i].pid; } @@ -277,7 +283,8 @@ uint32_t scheduler_wake_worker(uint32_t oldesp) { uint32_t cpu=smp_get(SMP_APIC_ID); task_list[cpu][0].syscall=false; // wake (syscall misused) - return scheduler_run(oldesp,0); + return 0; +// return scheduler_run(oldesp,0); } void scheduler_wake_all() @@ -484,5 +491,6 @@ void task_exit(uint32_t pid) task_list[cpu][i].active=false; } + compositor_del_window(task_list[cpu][idx].vmem); vmem_free_space_dir(task_list[cpu][idx].vmem,task_list[cpu][idx].thread); } |
