Changeset 2ab8ab3 in mainline for uspace/lib/ipcgfx
- Timestamp:
- 2021-02-16T18:12:05Z (5 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 68a552f
- Parents:
- ef734b7
- Location:
- uspace/lib/ipcgfx
- Files:
-
- 4 edited
-
include/ipcgfx/ipc/gc.h (modified) (2 diffs)
-
src/client.c (modified) (4 diffs)
-
src/server.c (modified) (3 diffs)
-
test/ipcgfx.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ipcgfx/include/ipcgfx/ipc/gc.h
ref734b7 r2ab8ab3 1 1 /* 2 * Copyright (c) 20 19Jiri Svoboda2 * Copyright (c) 2021 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 41 41 GC_SET_RGB_COLOR = IPC_FIRST_USER_METHOD, 42 42 GC_FILL_RECT, 43 GC_UPDATE, 43 44 GC_BITMAP_CREATE, 44 45 GC_BITMAP_CREATE_DOUTPUT, 45 46 GC_BITMAP_DESTROY, 46 47 GC_BITMAP_RENDER, 47 GC_BITMAP_GET_ALLOC 48 GC_BITMAP_GET_ALLOC, 48 49 } gc_request_t; 49 50 -
uspace/lib/ipcgfx/src/client.c
ref734b7 r2ab8ab3 1 1 /* 2 * Copyright (c) 20 19Jiri Svoboda2 * Copyright (c) 2021 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 47 47 static errno_t ipc_gc_set_color(void *, gfx_color_t *); 48 48 static errno_t ipc_gc_fill_rect(void *, gfx_rect_t *); 49 static errno_t ipc_gc_update(void *); 49 50 static errno_t ipc_gc_bitmap_create(void *, gfx_bitmap_params_t *, 50 51 gfx_bitmap_alloc_t *, void **); … … 56 57 .set_color = ipc_gc_set_color, 57 58 .fill_rect = ipc_gc_fill_rect, 59 .update = ipc_gc_update, 58 60 .bitmap_create = ipc_gc_bitmap_create, 59 61 .bitmap_destroy = ipc_gc_bitmap_destroy, … … 103 105 rc = async_req_4_0(exch, GC_FILL_RECT, rect->p0.x, rect->p0.y, 104 106 rect->p1.x, rect->p1.y); 107 async_exchange_end(exch); 108 109 return rc; 110 } 111 112 /** Update display on IPC GC. 113 * 114 * @param arg IPC GC 115 * 116 * @return EOK on success or an error code 117 */ 118 static errno_t ipc_gc_update(void *arg) 119 { 120 ipc_gc_t *ipcgc = (ipc_gc_t *) arg; 121 async_exch_t *exch; 122 errno_t rc; 123 124 exch = async_exchange_begin(ipcgc->sess); 125 rc = async_req_0_0(exch, GC_UPDATE); 105 126 async_exchange_end(exch); 106 127 -
uspace/lib/ipcgfx/src/server.c
ref734b7 r2ab8ab3 1 1 /* 2 * Copyright (c) 20 19Jiri Svoboda2 * Copyright (c) 2021 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 86 86 } 87 87 88 static void gc_update_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call) 89 { 90 errno_t rc; 91 92 rc = gfx_update(srvgc->gc); 93 async_answer_0(call, rc); 94 } 95 88 96 static void gc_bitmap_create_srv(ipc_gc_srv_t *srvgc, ipc_call_t *icall) 89 97 { … … 358 366 case GC_FILL_RECT: 359 367 gc_fill_rect_srv(&srvgc, &call); 368 break; 369 case GC_UPDATE: 370 gc_update_srv(&srvgc, &call); 360 371 break; 361 372 case GC_BITMAP_CREATE: -
uspace/lib/ipcgfx/test/ipcgfx.c
ref734b7 r2ab8ab3 1 1 /* 2 * Copyright (c) 20 19Jiri Svoboda2 * Copyright (c) 2021 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 52 52 static errno_t test_gc_set_color(void *, gfx_color_t *); 53 53 static errno_t test_gc_fill_rect(void *, gfx_rect_t *); 54 static errno_t test_gc_update(void *); 54 55 static errno_t test_gc_bitmap_create(void *, gfx_bitmap_params_t *, 55 56 gfx_bitmap_alloc_t *, void **); … … 61 62 .set_color = test_gc_set_color, 62 63 .fill_rect = test_gc_fill_rect, 64 .update = test_gc_update, 63 65 .bitmap_create = test_gc_bitmap_create, 64 66 .bitmap_destroy = test_gc_bitmap_destroy, … … 80 82 bool fill_rect_called; 81 83 gfx_rect_t fill_rect_rect; 84 85 bool update_called; 82 86 83 87 bool bitmap_create_called; … … 292 296 PCUT_ASSERT_EQUALS(rect.p1.x, resp.fill_rect_rect.p1.x); 293 297 PCUT_ASSERT_EQUALS(rect.p1.y, resp.fill_rect_rect.p1.y); 298 299 ipc_gc_delete(ipcgc); 300 async_hangup(sess); 301 302 rc = loc_service_unregister(sid); 303 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 304 } 305 306 /** gfx_update with server returning failure */ 307 PCUT_TEST(update_failure) 308 { 309 errno_t rc; 310 service_id_t sid; 311 test_response_t resp; 312 gfx_context_t *gc; 313 async_sess_t *sess; 314 ipc_gc_t *ipcgc; 315 316 async_set_fallback_port_handler(test_ipcgc_conn, &resp); 317 318 // FIXME This causes this test to be non-reentrant! 319 rc = loc_server_register(test_ipcgfx_server); 320 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 321 322 rc = loc_service_register(test_ipcgfx_svc, &sid); 323 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 324 325 sess = loc_service_connect(sid, INTERFACE_GC, 0); 326 PCUT_ASSERT_NOT_NULL(sess); 327 328 rc = ipc_gc_create(sess, &ipcgc); 329 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 330 331 gc = ipc_gc_get_ctx(ipcgc); 332 PCUT_ASSERT_NOT_NULL(gc); 333 334 resp.rc = ENOMEM; 335 resp.update_called = false; 336 rc = gfx_update(gc); 337 PCUT_ASSERT_ERRNO_VAL(resp.rc, rc); 338 PCUT_ASSERT_TRUE(resp.update_called); 339 340 ipc_gc_delete(ipcgc); 341 async_hangup(sess); 342 343 rc = loc_service_unregister(sid); 344 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 345 } 346 347 /** gfx_update with server returning success */ 348 PCUT_TEST(update_success) 349 { 350 errno_t rc; 351 service_id_t sid; 352 test_response_t resp; 353 gfx_context_t *gc; 354 async_sess_t *sess; 355 ipc_gc_t *ipcgc; 356 357 async_set_fallback_port_handler(test_ipcgc_conn, &resp); 358 359 // FIXME This causes this test to be non-reentrant! 360 rc = loc_server_register(test_ipcgfx_server); 361 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 362 363 rc = loc_service_register(test_ipcgfx_svc, &sid); 364 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 365 366 sess = loc_service_connect(sid, INTERFACE_GC, 0); 367 PCUT_ASSERT_NOT_NULL(sess); 368 369 rc = ipc_gc_create(sess, &ipcgc); 370 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 371 372 gc = ipc_gc_get_ctx(ipcgc); 373 PCUT_ASSERT_NOT_NULL(gc); 374 375 resp.rc = EOK; 376 resp.update_called = false; 377 rc = gfx_update(gc); 378 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 379 PCUT_ASSERT_TRUE(resp.update_called); 294 380 295 381 ipc_gc_delete(ipcgc); … … 847 933 } 848 934 935 /** Update test GC. 936 * 937 * @param arg Test GC 938 * 939 * @return EOK on success or an error code 940 */ 941 static errno_t test_gc_update(void *arg) 942 { 943 test_response_t *resp = (test_response_t *) arg; 944 945 resp->update_called = true; 946 return resp->rc; 947 } 948 849 949 /** Create bitmap in test GC. 850 950 *
Note:
See TracChangeset
for help on using the changeset viewer.
