Changes in uspace/lib/ui/src/ui.c [26edcd6:983052c] in mainline


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/src/ui.c

    r26edcd6 r983052c  
    11/*
    2  * Copyright (c) 2026 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    326326}
    327327
    328 /** Resize UI after screen size change.
    329  *
    330  * @param ui UI
    331  * @param rect New screen rectangle.
    332  */
    333 static void ui_resize(ui_t *ui, gfx_rect_t *rect)
    334 {
    335         ui_window_t *wnd;
    336 
    337         ui->rect = *rect;
    338 
    339         /* Reposition/resize windows */
    340         wnd = ui_window_first(ui);
    341         while (wnd != NULL) {
    342                 ui_window_update_placement(wnd);
    343                 wnd = ui_window_next(wnd);
    344         }
    345 
    346         /*
    347          * XXX Resizing cleared console GC so we need to repaint the
    348          * background.
    349          */
    350         (void)ui_paint(ui);
    351 }
    352 
    353328static void ui_cons_event_process(ui_t *ui, cons_event_t *event)
    354329{
     
    356331        ui_evclaim_t claim;
    357332        pos_event_t pos;
    358         sysarg_t cols, rows;
    359         gfx_rect_t rect;
    360         errno_t rc;
    361333
    362334        awnd = ui_window_get_active(ui);
     
    385357
    386358                break;
    387         case CEV_RESIZE:
    388                 rc = console_gc_resize(ui->cgc);
    389                 if (rc != EOK) {
    390                         /* XXX No good way to recover. */
    391                         console_done(ui->console);
    392                         exit(1);
    393                 }
    394 
    395                 rc = console_get_size(ui->console, &cols, &rows);
    396                 if (rc != EOK) {
    397                         /* XXX No good way to recover. */
    398                         console_done(ui->console);
    399                         exit(1);
    400                 }
    401 
    402                 ui_lock(ui);
    403 
    404                 rect.p0.x = 0;
    405                 rect.p0.y = 0;
    406                 rect.p1.x = cols;
    407                 rect.p1.y = rows;
    408 
    409                 ui_resize(ui, &rect);
    410                 ui_unlock(ui);
    411                 break;
    412359        }
    413360}
     
    460407        errno_t rc;
    461408        gfx_context_t *gc;
    462         ui_window_t *wnd;
     409        ui_window_t *awnd;
    463410        gfx_color_t *color = NULL;
    464411
     
    487434        gfx_color_delete(color);
    488435
    489         /* Repaint all windows */
    490         wnd = ui_window_first(ui);
    491         while (wnd != NULL) {
    492                 rc = ui_wdecor_paint(wnd->wdecor);
    493                 if (rc != EOK)
    494                         return rc;
    495 
    496                 rc = ui_window_paint(wnd);
    497                 if (rc != EOK)
    498                         return rc;
    499 
    500                 wnd = ui_window_next(wnd);
    501         }
    502 
    503         return EOK;
     436        /* XXX Should repaint all windows */
     437        awnd = ui_window_get_active(ui);
     438        if (awnd == NULL)
     439                return EOK;
     440
     441        rc = ui_wdecor_paint(awnd->wdecor);
     442        if (rc != EOK)
     443                return rc;
     444
     445        return ui_window_paint(awnd);
    504446}
    505447
     
    621563void ui_lock(ui_t *ui)
    622564{
    623         if (ui->display != NULL)
    624                 display_lock(ui->display);
    625565        fibril_mutex_lock(&ui->lock);
    626566}
     
    637577{
    638578        fibril_mutex_unlock(&ui->lock);
    639         if (ui->display != NULL)
    640                 display_unlock(ui->display);
    641579}
    642580
Note: See TracChangeset for help on using the changeset viewer.