Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ipcgfx/src/client.c

    rafcf704 r7470d97  
    11/*
    2  * Copyright (c) 2019 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4545#include "../private/client.h"
    4646
     47static errno_t ipc_gc_set_clip_rect(void *, gfx_rect_t *);
    4748static errno_t ipc_gc_set_color(void *, gfx_color_t *);
    4849static errno_t ipc_gc_fill_rect(void *, gfx_rect_t *);
     50static errno_t ipc_gc_update(void *);
    4951static errno_t ipc_gc_bitmap_create(void *, gfx_bitmap_params_t *,
    5052    gfx_bitmap_alloc_t *, void **);
     
    5456
    5557gfx_context_ops_t ipc_gc_ops = {
     58        .set_clip_rect = ipc_gc_set_clip_rect,
    5659        .set_color = ipc_gc_set_color,
    5760        .fill_rect = ipc_gc_fill_rect,
     61        .update = ipc_gc_update,
    5862        .bitmap_create = ipc_gc_bitmap_create,
    5963        .bitmap_destroy = ipc_gc_bitmap_destroy,
     
    6266};
    6367
     68/** Set clipping rectangle on IPC GC.
     69 *
     70 * @param arg IPC GC
     71 * @param rect Rectangle
     72 *
     73 * @return EOK on success or an error code
     74 */
     75static errno_t ipc_gc_set_clip_rect(void *arg, gfx_rect_t *rect)
     76{
     77        ipc_gc_t *ipcgc = (ipc_gc_t *) arg;
     78        async_exch_t *exch;
     79        errno_t rc;
     80
     81        exch = async_exchange_begin(ipcgc->sess);
     82        if (rect != NULL) {
     83                rc = async_req_4_0(exch, GC_SET_CLIP_RECT, rect->p0.x, rect->p0.y,
     84                    rect->p1.x, rect->p1.y);
     85        } else {
     86                rc = async_req_0_0(exch, GC_SET_CLIP_RECT_NULL);
     87        }
     88
     89        async_exchange_end(exch);
     90
     91        return rc;
     92}
     93
    6494/** Set color on IPC GC.
    6595 *
     
    103133        rc = async_req_4_0(exch, GC_FILL_RECT, rect->p0.x, rect->p0.y,
    104134            rect->p1.x, rect->p1.y);
     135        async_exchange_end(exch);
     136
     137        return rc;
     138}
     139
     140/** Update display on IPC GC.
     141 *
     142 * @param arg IPC GC
     143 *
     144 * @return EOK on success or an error code
     145 */
     146static errno_t ipc_gc_update(void *arg)
     147{
     148        ipc_gc_t *ipcgc = (ipc_gc_t *) arg;
     149        async_exch_t *exch;
     150        errno_t rc;
     151
     152        exch = async_exchange_begin(ipcgc->sess);
     153        rc = async_req_0_0(exch, GC_UPDATE);
    105154        async_exchange_end(exch);
    106155
Note: See TracChangeset for help on using the changeset viewer.