diff options
| author | Miguel <m.i@gmx.at> | 2018-10-17 02:39:56 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-10-17 02:39:56 +0200 |
| commit | 474c803c32fe055b4f09cb779f22b70d7eba8325 (patch) | |
| tree | fda4241ebd53688c17379a9dd11b111c5bf5e7a0 /kernel/syscalls.c | |
| parent | 39f271589fb9db3d6a383857817b13a9bb59d981 (diff) | |
screen areas invalidation
Diffstat (limited to 'kernel/syscalls.c')
| -rw-r--r-- | kernel/syscalls.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/kernel/syscalls.c b/kernel/syscalls.c index e73f89c..aa27ed8 100644 --- a/kernel/syscalls.c +++ b/kernel/syscalls.c @@ -31,6 +31,7 @@ //TODO move to process.c and implement per process // static fd fds[MAX_PID][MAX_FD]; +static ringbuffer invl[MAX_PID]; //static uint32_t opendir_pos[MAX_PID][MAX_FD]; //static char opendir_name[MAX_PID][MAX_FD][256]; static int tty[MAX_PID]; // keep track of /dev/tty fd for each process :P @@ -445,6 +446,7 @@ uint32_t syscall_fork(int none1, int none2, int none3, int pid) open_fd[newpid][i]=true; } tty[newpid]=tty[pid]; + invl[newpid]=invl[pid]; // fds[newpid][0]=fd_from_ringbuffer(); // TODO fix // open_fd[newpid][0]=true; @@ -593,9 +595,22 @@ uint32_t syscall_tcsetattr(int fd, struct termios *termios_p, uint32_t none, uin return 0; } -uint32_t syscall_gui_rect(uint32_t p1, uint32_t p2, uint32_t p3, uint32_t pid) +uint32_t syscall_gui_rect(uint32_t xy, uint32_t wh, uint32_t none, uint32_t pid) { +// klog("pid %d x y %d %d w h %d %d",pid,xy>>16,xy&0xffff,wh>>16,wh&0xffff); + + ringbuffer_put(&invl[pid],xy&0x000000ff); + ringbuffer_put(&invl[pid],(xy&0x0000ff00)>>8); + ringbuffer_put(&invl[pid],(xy&0x00ff0000)>>16); + ringbuffer_put(&invl[pid],(xy&0xff000000)>>24); + + ringbuffer_put(&invl[pid],wh&0x000000ff); + ringbuffer_put(&invl[pid],(wh&0x0000ff00)>>8); + ringbuffer_put(&invl[pid],(wh&0x00ff0000)>>16); + ringbuffer_put(&invl[pid],(wh&0xff000000)>>24); + compositor_wake(); + return 1; } uint32_t syscall_gui_win(uint32_t p1, uint32_t p2, uint32_t p3, uint32_t pid) @@ -603,9 +618,8 @@ uint32_t syscall_gui_win(uint32_t p1, uint32_t p2, uint32_t p3, uint32_t pid) uint32_t fdn=nextfd(pid); fds[pid][fdn]=fd_from_ringbuffer(); tty[pid]=fdn; - - task_add_win(pid); - + invl[pid]=ringbuffer_init(4); + task_add_win(pid,&invl[pid]); return 1; } |
