Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/gfxdemo/gfxdemo.c

    r400a16d rd0dfbba  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2026 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3636#include <display.h>
    3737#include <fibril.h>
     38#include <fibril_synch.h>
    3839#include <gfx/bitmap.h>
    3940#include <gfx/color.h>
     
    5152#include <ui/window.h>
    5253#include <ui/wdecor.h>
     54#include "gfxdemo.h"
    5355
    5456static void wnd_close_event(void *);
     
    6062};
    6163
     64static void uiwnd_resize_event(ui_window_t *, void *);
    6265static void uiwnd_close_event(ui_window_t *, void *);
    6366static void uiwnd_kbd_event(ui_window_t *, void *, kbd_event_t *);
    6467
    6568static ui_window_cb_t ui_window_cb = {
     69        .resize = uiwnd_resize_event,
    6670        .close = uiwnd_close_event,
    6771        .kbd = uiwnd_kbd_event
    6872};
    6973
     74static void demo_kbd_event(kbd_event_t *);
     75
    7076static bool quit = false;
     77static FIBRIL_MUTEX_INITIALIZE(quit_lock);
     78static FIBRIL_CONDVAR_INITIALIZE(quit_cv);
    7179static gfx_typeface_t *tface;
    7280static gfx_font_t *font;
    7381static gfx_coord_t vpad;
     82static console_ctrl_t *con = NULL;
     83static bool textmode;
     84static console_gc_t *cgc = NULL;
     85static unsigned scr_width, scr_height;
     86static ui_t *ui;
    7487
    7588/** Determine if we are running in text mode.
    7689 *
    77  * @param w Screen width
    78  * @param h Screen height
    7990 * @return @c true iff we are running in text mode
    8091 */
    81 static bool demo_is_text(gfx_coord_t w, gfx_coord_t h)
    82 {
    83         // XXX Need a proper way to determine text mode
    84         return w <= 80;
     92static bool demo_is_text(void)
     93{
     94        return textmode;
     95}
     96
     97/** Sleep until timeout or quit request.
     98 *
     99 * @param msec Number of microseconds to sleep for
     100 */
     101static void demo_msleep(unsigned msec)
     102{
     103        errno_t rc;
     104        usec_t usec;
     105        cons_event_t cevent;
     106        sysarg_t cols, rows;
     107
     108        if (ui != NULL)
     109                ui_unlock(ui);
     110        fibril_mutex_lock(&quit_lock);
     111        if (!quit) {
     112                if (con != NULL) {
     113                        usec = (usec_t)msec * 1000;
     114                        while (usec > 0 && !quit) {
     115                                rc = console_get_event_timeout(con, &cevent, &usec);
     116                                if (rc == EOK) {
     117                                        if (cevent.type == CEV_KEY) {
     118                                                fibril_mutex_unlock(&quit_lock);
     119                                                demo_kbd_event(&cevent.ev.key);
     120                                                fibril_mutex_lock(&quit_lock);
     121                                        } else if (cevent.type == CEV_RESIZE) {
     122                                                rc = console_get_size(con,
     123                                                    &cols, &rows);
     124                                                if (rc == EOK) {
     125                                                        scr_width = cols;
     126                                                        scr_height = rows;
     127                                                }
     128                                                rc = console_gc_resize(cgc);
     129                                                if (rc != EOK)
     130                                                        exit(1);
     131                                        }
     132                                }
     133                        }
     134                } else {
     135                        (void) fibril_condvar_wait_timeout(&quit_cv, &quit_lock,
     136                            (usec_t)msec * 1000);
     137                }
     138        }
     139        fibril_mutex_unlock(&quit_lock);
     140        if (ui != NULL)
     141                ui_lock(ui);
    85142}
    86143
     
    138195
    139196        /* XXX Crude way of detecting text mode */
    140         if (w < 256) {
     197        if (demo_is_text()) {
    141198                /* Create dummy font for text mode */
    142199                rc = gfx_typeface_create(gc, &tface);
     
    227284
    228285        if (font != NULL) {
    229                 if (demo_is_text(w, h)) {
     286                if (demo_is_text()) {
    230287                        rc = gfx_color_new_ega(0x1e, &color);
    231288                        if (rc != EOK)
     
    238295
    239296                gfx_text_fmt_init(&fmt);
     297                fmt.font = font;
    240298                fmt.color = color;
    241299                fmt.halign = gfx_halign_center;
     
    243301
    244302                pos.x = w / 2;
    245                 pos.y = h - 1;
    246                 rc = gfx_puttext(font, &pos, &fmt, text);
     303                pos.y = h;
     304                rc = gfx_puttext(&pos, &fmt, text);
    247305                if (rc != EOK) {
    248306                        printf("Error rendering text.\n");
     
    315373                gfx_color_delete(color);
    316374
    317                 fibril_usleep(500 * 1000);
    318 
     375                demo_msleep(500);
    319376                if (quit)
    320377                        break;
     
    350407                for (j = 0; j < h; j++) {
    351408                        pixelmap_put_pixel(&pixelmap, i, j,
    352                             PIXEL(0, (i % 30) < 3 ? 255 : 0,
     409                            PIXEL(255, (i % 30) < 3 ? 255 : 0,
    353410                            (j % 30) < 3 ? 255 : 0, i / 2));
    354411                }
     
    386443                        k = i * i + j * j;
    387444                        pixelmap_put_pixel(&pixelmap, i, j,
    388                             PIXEL(0, k, k, k));
     445                            PIXEL(255, k, k, k));
    389446                }
    390447        }
     
    421478                        k = i * i + j * j;
    422479                        pixelmap_put_pixel(&pixelmap, i, j,
    423                             k < w * w / 2 ? PIXEL(0, 0, 255, 0) :
    424                             PIXEL(0, 255, 0, 255));
     480                            k < w * w / 2 ? PIXEL(255, 0, 255, 0) :
     481                            PIXEL(255, 255, 0, 255));
    425482                }
    426483        }
     
    477534                        if (rc != EOK)
    478535                                goto error;
    479                         fibril_usleep(250 * 1000);
    480 
     536
     537                        demo_msleep(250);
    481538                        if (quit)
    482539                                goto out;
     
    538595                }
    539596
    540                 fibril_usleep(500 * 1000);
    541 
     597                demo_msleep(500);
    542598                if (quit)
    543599                        break;
     
    579635        params.rect.p1.y = 40;
    580636        params.flags = bmpf_color_key;
    581         params.key_color = PIXEL(0, 255, 0, 255);
     637        params.key_color = PIXEL(255, 255, 0, 255);
    582638
    583639        rc = gfx_bitmap_create(gc, &params, NULL, &bitmap);
     
    599655                }
    600656
    601                 fibril_usleep(500 * 1000);
    602 
     657                demo_msleep(500);
    603658                if (quit)
    604659                        break;
     
    678733        gfx_color_delete(color);
    679734
    680         if (demo_is_text(w, h)) {
     735        if (demo_is_text()) {
    681736                rc = gfx_color_new_ega(0x1f, &color);
    682737                if (rc != EOK)
     
    689744
    690745        gfx_text_fmt_init(&fmt);
     746        fmt.font = font;
    691747        fmt.color = color;
    692748
    693749        pos.x = rect.p0.x;
    694750        pos.y = rect.p0.y;
    695         rc = gfx_puttext(font, &pos, &fmt, "Top left");
     751        rc = gfx_puttext(&pos, &fmt, "Top left");
    696752        if (rc != EOK) {
    697753                printf("Error rendering text.\n");
     
    702758        pos.y = rect.p0.y;
    703759        fmt.halign = gfx_halign_center;
    704         rc = gfx_puttext(font, &pos, &fmt, "Top center");
     760        rc = gfx_puttext(&pos, &fmt, "Top center");
    705761        if (rc != EOK)
    706762                goto error;
     
    709765        pos.y = rect.p0.y;
    710766        fmt.halign = gfx_halign_right;
    711         rc = gfx_puttext(font, &pos, &fmt, "Top right");
     767        rc = gfx_puttext(&pos, &fmt, "Top right");
    712768        if (rc != EOK)
    713769                goto error;
     
    718774        pos.y = (rect.p0.y + rect.p1.y - 1) / 2;
    719775        fmt.halign = gfx_halign_left;
    720         rc = gfx_puttext(font, &pos, &fmt, "Center left");
     776        rc = gfx_puttext(&pos, &fmt, "Center left");
    721777        if (rc != EOK)
    722778                goto error;
     
    725781        pos.y = (rect.p0.y + rect.p1.y - 1) / 2;
    726782        fmt.halign = gfx_halign_center;
    727         rc = gfx_puttext(font, &pos, &fmt, "Center");
     783        rc = gfx_puttext(&pos, &fmt, "Center");
    728784        if (rc != EOK)
    729785                goto error;
     
    732788        pos.y = (rect.p0.y + rect.p1.y - 1) / 2;
    733789        fmt.halign = gfx_halign_right;
    734         rc = gfx_puttext(font, &pos, &fmt, "Center right");
     790        rc = gfx_puttext(&pos, &fmt, "Center right");
    735791        if (rc != EOK)
    736792                goto error;
     
    741797        pos.y = rect.p1.y - 1;
    742798        fmt.halign = gfx_halign_left;
    743         rc = gfx_puttext(font, &pos, &fmt, "Bottom left");
     799        rc = gfx_puttext(&pos, &fmt, "Bottom left");
    744800        if (rc != EOK)
    745801                goto error;
     
    748804        pos.y = rect.p1.y;
    749805        fmt.halign = gfx_halign_center;
    750         rc = gfx_puttext(font, &pos, &fmt, "Bottom center");
     806        rc = gfx_puttext(&pos, &fmt, "Bottom center");
    751807        if (rc != EOK)
    752808                goto error;
     
    755811        pos.y = rect.p1.y;
    756812        fmt.halign = gfx_halign_right;
    757         rc = gfx_puttext(font, &pos, &fmt, "Bottom right");
     813        rc = gfx_puttext(&pos, &fmt, "Bottom right");
    758814        if (rc != EOK)
    759815                goto error;
     
    762818
    763819        gfx_text_fmt_init(&fmt);
     820        fmt.font = font;
    764821
    765822        for (i = 0; i < 8; i++) {
    766                 if (demo_is_text(w, h)) {
     823                if (demo_is_text()) {
    767824                        rc = gfx_color_new_ega(i != 0 ? i : 0x10, &color);
    768825                        if (rc != EOK)
     
    776833
    777834                fmt.color = color;
     835                fmt.underline = !fmt.underline;
    778836
    779837                pos.x = w / 20;
    780838                pos.y = (6 + i) * h / 15;
    781                 rc = gfx_puttext(font, &pos, &fmt, "The quick brown fox jumps over the lazy dog.");
     839                rc = gfx_puttext(&pos, &fmt, "The quick brown fox jumps over the lazy dog.");
    782840                if (rc != EOK)
    783841                        goto error;
     
    787845
    788846        for (i = 0; i < 10; i++) {
    789                 fibril_usleep(500 * 1000);
     847                demo_msleep(500);
     848                if (quit)
     849                        break;
     850        }
     851
     852        return EOK;
     853error:
     854        return rc;
     855}
     856
     857/** Run text abbreviation demo on a graphic context.
     858 *
     859 * @param gc Graphic context
     860 * @param w Width
     861 * @param h Height
     862 */
     863static errno_t demo_text_abbr(gfx_context_t *gc, gfx_coord_t w, gfx_coord_t h)
     864{
     865        gfx_color_t *color = NULL;
     866        gfx_rect_t rect;
     867        gfx_coord2_t pos;
     868        gfx_text_fmt_t fmt;
     869        int i;
     870        errno_t rc;
     871
     872        if (quit)
     873                return EOK;
     874
     875        rc = demo_begin(gc, w, h, "Text abbreviation");
     876        if (rc != EOK)
     877                goto error;
     878
     879        for (i = 0; i < 11; i++) {
     880
     881                rc = gfx_color_new_rgb_i16(0, 0, 0x8000, &color);
     882                if (rc != EOK)
     883                        goto error;
     884
     885                rc = gfx_set_color(gc, color);
     886                if (rc != EOK)
     887                        goto error;
     888
     889                rect.p0.x = w / 20;
     890                rect.p0.y = (2 + 2 * i) * h / 25;
     891                rect.p1.x = w - w / 20 - w * i / 12;
     892                rect.p1.y = (3 + 2 * i) * h / 25;
     893
     894                rc = gfx_fill_rect(gc, &rect);
     895                if (rc != EOK)
     896                        goto error;
     897
     898                gfx_color_delete(color);
     899
     900                if (demo_is_text()) {
     901                        rc = gfx_color_new_ega(0x1f, &color);
     902                        if (rc != EOK)
     903                                goto error;
     904                } else {
     905                        rc = gfx_color_new_rgb_i16(0xffff, 0xffff, 0xffff,
     906                            &color);
     907                        if (rc != EOK)
     908                                goto error;
     909                }
     910
     911                gfx_text_fmt_init(&fmt);
     912                fmt.font = font;
     913                fmt.color = color;
     914                fmt.abbreviate = true;
     915                fmt.width = rect.p1.x - rect.p0.x;
     916
     917                pos.x = rect.p0.x;
     918                pos.y = rect.p0.y;
     919                rc = gfx_puttext(&pos, &fmt,
     920                    "The quick brow fox jumps over the lazy dog!");
     921                if (rc != EOK) {
     922                        printf("Error rendering text.\n");
     923                        goto error;
     924                }
     925        }
     926
     927        for (i = 0; i < 10; i++) {
     928                demo_msleep(500);
    790929                if (quit)
    791930                        break;
     
    8841023                }
    8851024
    886                 fibril_usleep(500 * 1000);
    887 
     1025                demo_msleep(500);
    8881026                if (quit)
    8891027                        break;
     
    9021040 *
    9031041 * @param gc Graphic context
    904  * @param w Width
    905  * @param h Height
    906  */
    907 static errno_t demo_loop(gfx_context_t *gc, gfx_coord_t w, gfx_coord_t h)
    908 {
    909         errno_t rc;
    910 
    911         (void) demo_font_init(gc, w, h);
     1042 */
     1043static errno_t demo_loop(gfx_context_t *gc)
     1044{
     1045        errno_t rc;
     1046
     1047        (void) demo_font_init(gc, scr_width, scr_height);
    9121048
    9131049        while (!quit) {
    914                 rc = demo_rects(gc, w, h);
    915                 if (rc != EOK)
    916                         goto error;
    917 
    918                 rc = demo_bitmap(gc, w, h);
    919                 if (rc != EOK)
    920                         goto error;
    921 
    922                 rc = demo_bitmap2(gc, w, h);
    923                 if (rc != EOK)
    924                         goto error;
    925 
    926                 rc = demo_bitmap_kc(gc, w, h);
    927                 if (rc != EOK)
    928                         goto error;
    929 
    930                 rc = demo_text(gc, w, h);
    931                 if (rc != EOK)
    932                         goto error;
    933 
    934                 rc = demo_clip(gc, w, h);
     1050                rc = demo_rects(gc, scr_width, scr_height);
     1051                if (rc != EOK)
     1052                        goto error;
     1053
     1054                rc = demo_bitmap(gc, scr_width, scr_height);
     1055                if (rc != EOK)
     1056                        goto error;
     1057
     1058                rc = demo_bitmap2(gc, scr_width, scr_height);
     1059                if (rc != EOK)
     1060                        goto error;
     1061
     1062                rc = demo_bitmap_kc(gc, scr_width, scr_height);
     1063                if (rc != EOK)
     1064                        goto error;
     1065
     1066                rc = demo_text(gc, scr_width, scr_height);
     1067                if (rc != EOK)
     1068                        goto error;
     1069
     1070                rc = demo_text_abbr(gc, scr_width, scr_height);
     1071                if (rc != EOK)
     1072                        goto error;
     1073
     1074                rc = demo_clip(gc, scr_width, scr_height);
    9351075                if (rc != EOK)
    9361076                        goto error;
     
    9471087static errno_t demo_console(void)
    9481088{
    949         console_ctrl_t *con = NULL;
    950         console_gc_t *cgc = NULL;
    9511089        gfx_context_t *gc;
    952         errno_t rc;
    953 
    954         printf("Init console..\n");
     1090        sysarg_t cols, rows;
     1091        errno_t rc;
     1092
    9551093        con = console_init(stdin, stdout);
    9561094        if (con == NULL)
    9571095                return EIO;
    9581096
    959         printf("Create console GC\n");
     1097        rc = console_get_size(con, &cols, &rows);
     1098        if (rc != EOK)
     1099                return rc;
     1100
    9601101        rc = console_gc_create(con, stdout, &cgc);
    9611102        if (rc != EOK)
     
    9641105        gc = console_gc_get_ctx(cgc);
    9651106
    966         rc = demo_loop(gc, 80, 25);
     1107        /* Currently console is always text. */
     1108        textmode = true;
     1109
     1110        scr_width = cols;
     1111        scr_height = rows;
     1112
     1113        rc = demo_loop(gc);
    9671114        if (rc != EOK)
    9681115                return rc;
     
    9731120
    9741121        return EOK;
     1122}
     1123
     1124static errno_t demo_ui_fibril(void *arg)
     1125{
     1126        demo_ui_args_t *args = (demo_ui_args_t *)arg;
     1127        errno_t rc;
     1128
     1129        ui_lock(args->ui);
     1130        scr_width = args->dims.x;
     1131        scr_height = args->dims.y;
     1132        rc = demo_loop(args->gc);
     1133        ui_unlock(args->ui);
     1134        ui_quit(args->ui);
     1135        return rc;
    9751136}
    9761137
     
    9781139static errno_t demo_ui(const char *display_spec)
    9791140{
    980         ui_t *ui = NULL;
    9811141        ui_wnd_params_t params;
    9821142        ui_window_t *window = NULL;
     
    9851145        gfx_rect_t wrect;
    9861146        gfx_coord2_t off;
    987         errno_t rc;
    988 
    989         printf("Init UI..\n");
     1147        gfx_rect_t ui_rect;
     1148        gfx_coord2_t dims;
     1149        demo_ui_args_t args;
     1150        fid_t fid;
     1151        errno_t rc;
    9901152
    9911153        rc = ui_create(display_spec, &ui);
    9921154        if (rc != EOK) {
    9931155                printf("Error initializing UI (%s)\n", display_spec);
     1156                goto error;
     1157        }
     1158
     1159        rc = ui_get_rect(ui, &ui_rect);
     1160        if (rc != EOK) {
     1161                printf("Error getting display size.\n");
    9941162                goto error;
    9951163        }
     
    10031171        params.caption = "GFX Demo";
    10041172
     1173        /* Do not decorate the window in fullscreen mode */
     1174        if (ui_is_fullscreen(ui)) {
     1175                params.style &= ~ui_wds_decorated;
     1176                params.placement = ui_wnd_place_full_screen;
     1177        }
     1178
    10051179        /*
    10061180         * Compute window rectangle such that application area corresponds
    10071181         * to rect
    10081182         */
    1009         ui_wdecor_rect_from_app(params.style, &rect, &wrect);
     1183        ui_wdecor_rect_from_app(ui, params.style, &rect, &wrect);
    10101184        off = wrect.p0;
    10111185        gfx_rect_rtranslate(&off, &wrect, &params.rect);
     1186
     1187        gfx_rect_dims(&ui_rect, &dims);
     1188
     1189        /* Make sure window is not larger than the entire screen */
     1190        if (params.rect.p1.x > dims.x)
     1191                params.rect.p1.x = dims.x;
     1192        if (params.rect.p1.y > dims.y)
     1193                params.rect.p1.y = dims.y;
    10121194
    10131195        rc = ui_window_create(ui, &params, &window);
     
    10251207        }
    10261208
    1027         task_retval(0);
    1028 
    1029         rc = demo_loop(gc, rect.p1.x, rect.p1.y);
    1030         if (rc != EOK)
    1031                 goto error;
    1032 
     1209        ui_window_get_app_rect(window, &rect);
     1210        gfx_rect_dims(&rect, &dims);
     1211
     1212        if (!ui_is_fullscreen(ui))
     1213                task_retval(0);
     1214
     1215        textmode = ui_is_textmode(ui);
     1216
     1217        args.gc = gc;
     1218        args.dims = dims;
     1219        args.ui = ui;
     1220
     1221        fid = fibril_create(demo_ui_fibril, (void *)&args);
     1222        if (fid == 0) {
     1223                rc = ENOMEM;
     1224                goto error;
     1225        }
     1226
     1227        fibril_add_ready(fid);
     1228
     1229        ui_run(ui);
    10331230        ui_window_destroy(window);
    10341231        ui_destroy(ui);
     
    10521249        errno_t rc;
    10531250
    1054         printf("Init display..\n");
    1055 
    10561251        rc = display_open(display_svc, &display);
    10571252        if (rc != EOK) {
     
    10651260        params.rect.p1.x = 400;
    10661261        params.rect.p1.y = 300;
     1262        params.caption = "GFX Demo";
    10671263
    10681264        rc = display_window_create(display, &params, &wnd_cb, NULL, &window);
     
    10801276        task_retval(0);
    10811277
    1082         rc = demo_loop(gc, 400, 300);
     1278        /* FIXME Assuming display service is not text mode. */
     1279        textmode = false;
     1280
     1281        scr_width = 400;
     1282        scr_height = 300;
     1283        rc = demo_loop(gc);
    10831284        if (rc != EOK)
    10841285                return rc;
     
    10941295}
    10951296
     1297static void demo_quit(void)
     1298{
     1299        fibril_mutex_lock(&quit_lock);
     1300        quit = true;
     1301        fibril_mutex_unlock(&quit_lock);
     1302        fibril_condvar_broadcast(&quit_cv);
     1303}
     1304
    10961305static void wnd_close_event(void *arg)
    10971306{
    1098         printf("Close event\n");
    1099         quit = true;
     1307        demo_quit();
     1308}
     1309
     1310static void demo_kbd_event(kbd_event_t *event)
     1311{
     1312        if (event->type == KEY_PRESS) {
     1313                /* Ctrl-Q */
     1314                if ((event->mods & KM_CTRL) != 0 &&
     1315                    (event->mods & KM_ALT) == 0 &&
     1316                    (event->mods & KM_SHIFT) == 0 &&
     1317                    event->key == KC_Q) {
     1318                        demo_quit();
     1319                }
     1320
     1321                /* Escape */
     1322                if ((event->mods & KM_CTRL) == 0 &&
     1323                    (event->mods & KM_ALT) == 0 &&
     1324                    (event->mods & KM_SHIFT) == 0 &&
     1325                    event->key == KC_ESCAPE) {
     1326                        demo_quit();
     1327                }
     1328        }
    11001329}
    11011330
    11021331static void wnd_kbd_event(void *arg, kbd_event_t *event)
    11031332{
    1104         printf("Keyboard event type=%d key=%d\n", event->type, event->key);
    1105         if (event->type == KEY_PRESS)
    1106                 quit = true;
     1333        (void)arg;
     1334        demo_kbd_event(event);
     1335}
     1336
     1337static void uiwnd_resize_event(ui_window_t *window, void *arg)
     1338{
     1339        gfx_rect_t rect;
     1340        gfx_coord2_t dims;
     1341
     1342        ui_window_get_app_rect(window, &rect);
     1343        gfx_rect_dims(&rect, &dims);
     1344        scr_width = dims.x;
     1345        scr_height = dims.y;
    11071346}
    11081347
    11091348static void uiwnd_close_event(ui_window_t *window, void *arg)
    11101349{
    1111         printf("Close event\n");
    1112         quit = true;
     1350        demo_quit();
    11131351}
    11141352
    11151353static void uiwnd_kbd_event(ui_window_t *window, void *arg, kbd_event_t *event)
    11161354{
    1117         printf("Keyboard event type=%d key=%d\n", event->type, event->key);
    1118         if (event->type == KEY_PRESS)
    1119                 quit = true;
     1355        (void)window;
     1356        (void)arg;
     1357        demo_kbd_event(event);
    11201358}
    11211359
     
    11291367        errno_t rc;
    11301368        const char *display_svc = DISPLAY_DEFAULT;
     1369        const char *ui_display_spec = UI_ANY_DEFAULT;
    11311370        int i;
    11321371
     
    11411380                        }
    11421381
    1143                         display_svc = argv[i++];
     1382                        display_svc = ui_display_spec = argv[i++];
    11441383                } else {
    11451384                        printf("Invalid option '%s'.\n", argv[i]);
     
    11491388        }
    11501389
    1151         if (i >= argc || str_cmp(argv[i], "display") == 0) {
    1152                 rc = demo_display(display_svc);
     1390        if (i >= argc || str_cmp(argv[i], "ui") == 0) {
     1391                rc = demo_ui(ui_display_spec);
    11531392                if (rc != EOK)
    11541393                        return 1;
     
    11571396                if (rc != EOK)
    11581397                        return 1;
    1159         } else if (str_cmp(argv[i], "ui") == 0) {
    1160                 rc = demo_ui(display_svc);
     1398        } else if (str_cmp(argv[i], "display") == 0) {
     1399                rc = demo_display(display_svc);
    11611400                if (rc != EOK)
    11621401                        return 1;
Note: See TracChangeset for help on using the changeset viewer.