Changes in uspace/lib/ipcgfx/src/server.c [fc4abca:cdd6fc9] in mainline
- File:
-
- 1 edited
-
uspace/lib/ipcgfx/src/server.c (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ipcgfx/src/server.c
rfc4abca rcdd6fc9 1 1 /* 2 * Copyright (c) 20 19Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 41 41 #include <gfx/color.h> 42 42 #include <gfx/render.h> 43 #include <ipc/bd.h>44 43 #include <ipcgfx/ipc/gc.h> 45 44 #include <ipcgfx/server.h> … … 52 51 static ipc_gc_srv_bitmap_t *gc_bitmap_lookup(ipc_gc_srv_t *, sysarg_t); 53 52 54 static void gc_set_rgb_color_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call) 55 { 56 uint16_t r, g, b; 57 gfx_color_t *color; 58 errno_t rc; 59 60 r = ipc_get_arg1(call); 61 g = ipc_get_arg2(call); 62 b = ipc_get_arg3(call); 63 64 rc = gfx_color_new_rgb_i16(r, g, b, &color); 65 if (rc != EOK) { 66 async_answer_0(call, ENOMEM); 67 return; 68 } 69 70 rc = gfx_set_color(srvgc->gc, color); 71 async_answer_0(call, rc); 72 } 73 74 static void gc_fill_rect_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call) 53 static void gc_set_clip_rect_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call) 75 54 { 76 55 gfx_rect_t rect; … … 82 61 rect.p1.y = ipc_get_arg4(call); 83 62 63 rc = gfx_set_clip_rect(srvgc->gc, &rect); 64 async_answer_0(call, rc); 65 } 66 67 static void gc_set_clip_rect_null_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call) 68 { 69 errno_t rc; 70 71 rc = gfx_set_clip_rect(srvgc->gc, NULL); 72 async_answer_0(call, rc); 73 } 74 75 static void gc_set_rgb_color_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call) 76 { 77 uint16_t r, g, b; 78 gfx_color_t *color; 79 errno_t rc; 80 81 r = ipc_get_arg1(call); 82 g = ipc_get_arg2(call); 83 b = ipc_get_arg3(call); 84 85 rc = gfx_color_new_rgb_i16(r, g, b, &color); 86 if (rc != EOK) { 87 async_answer_0(call, ENOMEM); 88 return; 89 } 90 91 rc = gfx_set_color(srvgc->gc, color); 92 async_answer_0(call, rc); 93 } 94 95 static void gc_fill_rect_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call) 96 { 97 gfx_rect_t rect; 98 errno_t rc; 99 100 rect.p0.x = ipc_get_arg1(call); 101 rect.p0.y = ipc_get_arg2(call); 102 rect.p1.x = ipc_get_arg3(call); 103 rect.p1.y = ipc_get_arg4(call); 104 84 105 rc = gfx_fill_rect(srvgc->gc, &rect); 106 async_answer_0(call, rc); 107 } 108 109 static void gc_update_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call) 110 { 111 errno_t rc; 112 113 rc = gfx_update(srvgc->gc); 85 114 async_answer_0(call, rc); 86 115 } … … 122 151 123 152 if (!async_share_out_receive(&call, &size, &flags)) { 153 async_answer_0(&call, EINVAL); 124 154 async_answer_0(icall, EINVAL); 125 155 return; … … 128 158 /* Check size */ 129 159 if (size != PAGES2SIZE(SIZE2PAGES(dim.x * dim.y * sizeof(uint32_t)))) { 160 async_answer_0(&call, EINVAL); 130 161 async_answer_0(icall, EINVAL); 131 162 return; … … 134 165 rc = async_share_out_finalize(&call, &pixels); 135 166 if (rc != EOK || pixels == AS_MAP_FAILED) { 167 async_answer_0(&call, ENOMEM); 136 168 async_answer_0(icall, ENOMEM); 137 169 return; … … 353 385 354 386 switch (method) { 387 case GC_SET_CLIP_RECT: 388 gc_set_clip_rect_srv(&srvgc, &call); 389 break; 390 case GC_SET_CLIP_RECT_NULL: 391 gc_set_clip_rect_null_srv(&srvgc, &call); 392 break; 355 393 case GC_SET_RGB_COLOR: 356 394 gc_set_rgb_color_srv(&srvgc, &call); … … 358 396 case GC_FILL_RECT: 359 397 gc_fill_rect_srv(&srvgc, &call); 398 break; 399 case GC_UPDATE: 400 gc_update_srv(&srvgc, &call); 360 401 break; 361 402 case GC_BITMAP_CREATE:
Note:
See TracChangeset
for help on using the changeset viewer.
