Ignore:
File:
1 edited

Legend:

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

    rd0dfbba rda15002  
    11/*
    2  * Copyright (c) 2026 Jiri Svoboda
     2 * Copyright (c) 2020 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3636#include <display.h>
    3737#include <fibril.h>
    38 #include <fibril_synch.h>
    3938#include <gfx/bitmap.h>
    4039#include <gfx/color.h>
     
    5251#include <ui/window.h>
    5352#include <ui/wdecor.h>
    54 #include "gfxdemo.h"
    5553
    5654static void wnd_close_event(void *);
     
    6260};
    6361
    64 static void uiwnd_resize_event(ui_window_t *, void *);
    6562static void uiwnd_close_event(ui_window_t *, void *);
    6663static void uiwnd_kbd_event(ui_window_t *, void *, kbd_event_t *);
    6764
    6865static ui_window_cb_t ui_window_cb = {
    69         .resize = uiwnd_resize_event,
    7066        .close = uiwnd_close_event,
    7167        .kbd = uiwnd_kbd_event
    7268};
    7369
    74 static void demo_kbd_event(kbd_event_t *);
    75 
    7670static bool quit = false;
    77 static FIBRIL_MUTEX_INITIALIZE(quit_lock);
    78 static FIBRIL_CONDVAR_INITIALIZE(quit_cv);
    7971static gfx_typeface_t *tface;
    8072static gfx_font_t *font;
    8173static gfx_coord_t vpad;
    82 static console_ctrl_t *con = NULL;
    83 static bool textmode;
    84 static console_gc_t *cgc = NULL;
    85 static unsigned scr_width, scr_height;
    86 static ui_t *ui;
    87 
    88 /** Determine if we are running in text mode.
    89  *
    90  * @return @c true iff we are running in text mode
    91  */
    92 static 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  */
    101 static 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);
    142 }
    14374
    14475/** Clear screen.
     
    195126
    196127        /* XXX Crude way of detecting text mode */
    197         if (demo_is_text()) {
     128        if (w < 256) {
    198129                /* Create dummy font for text mode */
    199130                rc = gfx_typeface_create(gc, &tface);
     
    284215
    285216        if (font != NULL) {
    286                 if (demo_is_text()) {
    287                         rc = gfx_color_new_ega(0x1e, &color);
    288                         if (rc != EOK)
    289                                 goto error;
    290                 } else {
    291                         rc = gfx_color_new_rgb_i16(0xffff, 0xffff, 0xffff, &color);
    292                         if (rc != EOK)
    293                                 goto error;
    294                 }
     217                rc = gfx_color_new_rgb_i16(0xffff, 0xffff, 0xffff, &color);
     218                if (rc != EOK)
     219                        goto error;
    295220
    296221                gfx_text_fmt_init(&fmt);
    297                 fmt.font = font;
    298222                fmt.color = color;
    299223                fmt.halign = gfx_halign_center;
     
    301225
    302226                pos.x = w / 2;
    303                 pos.y = h;
    304                 rc = gfx_puttext(&pos, &fmt, text);
     227                pos.y = h - 1;
     228                rc = gfx_puttext(font, &pos, &fmt, text);
    305229                if (rc != EOK) {
    306230                        printf("Error rendering text.\n");
     
    373297                gfx_color_delete(color);
    374298
    375                 demo_msleep(500);
     299                fibril_usleep(500 * 1000);
     300
    376301                if (quit)
    377302                        break;
     
    407332                for (j = 0; j < h; j++) {
    408333                        pixelmap_put_pixel(&pixelmap, i, j,
    409                             PIXEL(255, (i % 30) < 3 ? 255 : 0,
     334                            PIXEL(0, (i % 30) < 3 ? 255 : 0,
    410335                            (j % 30) < 3 ? 255 : 0, i / 2));
    411336                }
     
    443368                        k = i * i + j * j;
    444369                        pixelmap_put_pixel(&pixelmap, i, j,
    445                             PIXEL(255, k, k, k));
     370                            PIXEL(0, k, k, k));
    446371                }
    447372        }
     
    478403                        k = i * i + j * j;
    479404                        pixelmap_put_pixel(&pixelmap, i, j,
    480                             k < w * w / 2 ? PIXEL(255, 0, 255, 0) :
    481                             PIXEL(255, 255, 0, 255));
     405                            k < w * w / 2 ? PIXEL(0, 0, 255, 0) :
     406                            PIXEL(0, 255, 0, 255));
    482407                }
    483408        }
     
    534459                        if (rc != EOK)
    535460                                goto error;
    536 
    537                         demo_msleep(250);
     461                        fibril_usleep(250 * 1000);
     462
    538463                        if (quit)
    539464                                goto out;
     
    595520                }
    596521
    597                 demo_msleep(500);
     522                fibril_usleep(500 * 1000);
     523
    598524                if (quit)
    599525                        break;
     
    635561        params.rect.p1.y = 40;
    636562        params.flags = bmpf_color_key;
    637         params.key_color = PIXEL(255, 255, 0, 255);
     563        params.key_color = PIXEL(0, 255, 0, 255);
    638564
    639565        rc = gfx_bitmap_create(gc, &params, NULL, &bitmap);
     
    655581                }
    656582
    657                 demo_msleep(500);
     583                fibril_usleep(500 * 1000);
     584
    658585                if (quit)
    659586                        break;
     
    733660        gfx_color_delete(color);
    734661
    735         if (demo_is_text()) {
    736                 rc = gfx_color_new_ega(0x1f, &color);
    737                 if (rc != EOK)
    738                         goto error;
    739         } else {
    740                 rc = gfx_color_new_rgb_i16(0xffff, 0xffff, 0xffff, &color);
    741                 if (rc != EOK)
    742                         goto error;
    743         }
     662        rc = gfx_color_new_rgb_i16(0xffff, 0xffff, 0xffff, &color);
     663        if (rc != EOK)
     664                goto error;
    744665
    745666        gfx_text_fmt_init(&fmt);
    746         fmt.font = font;
    747667        fmt.color = color;
    748668
    749669        pos.x = rect.p0.x;
    750670        pos.y = rect.p0.y;
    751         rc = gfx_puttext(&pos, &fmt, "Top left");
     671        rc = gfx_puttext(font, &pos, &fmt, "Top left");
    752672        if (rc != EOK) {
    753673                printf("Error rendering text.\n");
     
    758678        pos.y = rect.p0.y;
    759679        fmt.halign = gfx_halign_center;
    760         rc = gfx_puttext(&pos, &fmt, "Top center");
    761         if (rc != EOK)
    762                 goto error;
    763 
    764         pos.x = rect.p1.x;
     680        rc = gfx_puttext(font, &pos, &fmt, "Top center");
     681        if (rc != EOK)
     682                goto error;
     683
     684        pos.x = rect.p1.x - 1;
    765685        pos.y = rect.p0.y;
    766686        fmt.halign = gfx_halign_right;
    767         rc = gfx_puttext(&pos, &fmt, "Top right");
     687        rc = gfx_puttext(font, &pos, &fmt, "Top right");
    768688        if (rc != EOK)
    769689                goto error;
     
    774694        pos.y = (rect.p0.y + rect.p1.y - 1) / 2;
    775695        fmt.halign = gfx_halign_left;
    776         rc = gfx_puttext(&pos, &fmt, "Center left");
     696        rc = gfx_puttext(font, &pos, &fmt, "Center left");
    777697        if (rc != EOK)
    778698                goto error;
     
    781701        pos.y = (rect.p0.y + rect.p1.y - 1) / 2;
    782702        fmt.halign = gfx_halign_center;
    783         rc = gfx_puttext(&pos, &fmt, "Center");
    784         if (rc != EOK)
    785                 goto error;
    786 
    787         pos.x = rect.p1.x;
     703        rc = gfx_puttext(font, &pos, &fmt, "Center");
     704        if (rc != EOK)
     705                goto error;
     706
     707        pos.x = rect.p1.x - 1;
    788708        pos.y = (rect.p0.y + rect.p1.y - 1) / 2;
    789709        fmt.halign = gfx_halign_right;
    790         rc = gfx_puttext(&pos, &fmt, "Center right");
     710        rc = gfx_puttext(font, &pos, &fmt, "Center right");
    791711        if (rc != EOK)
    792712                goto error;
     
    797717        pos.y = rect.p1.y - 1;
    798718        fmt.halign = gfx_halign_left;
    799         rc = gfx_puttext(&pos, &fmt, "Bottom left");
     719        rc = gfx_puttext(font, &pos, &fmt, "Bottom left");
    800720        if (rc != EOK)
    801721                goto error;
    802722
    803723        pos.x = (rect.p0.x + rect.p1.x - 1) / 2;
    804         pos.y = rect.p1.y;
     724        pos.y = rect.p1.y - 1;
    805725        fmt.halign = gfx_halign_center;
    806         rc = gfx_puttext(&pos, &fmt, "Bottom center");
    807         if (rc != EOK)
    808                 goto error;
    809 
    810         pos.x = rect.p1.x;
    811         pos.y = rect.p1.y;
     726        rc = gfx_puttext(font, &pos, &fmt, "Bottom center");
     727        if (rc != EOK)
     728                goto error;
     729
     730        pos.x = rect.p1.x - 1;
     731        pos.y = rect.p1.y - 1;
    812732        fmt.halign = gfx_halign_right;
    813         rc = gfx_puttext(&pos, &fmt, "Bottom right");
     733        rc = gfx_puttext(font, &pos, &fmt, "Bottom right");
    814734        if (rc != EOK)
    815735                goto error;
     
    818738
    819739        gfx_text_fmt_init(&fmt);
    820         fmt.font = font;
    821740
    822741        for (i = 0; i < 8; i++) {
    823                 if (demo_is_text()) {
    824                         rc = gfx_color_new_ega(i != 0 ? i : 0x10, &color);
    825                         if (rc != EOK)
    826                                 goto error;
    827                 } else {
    828                         rc = gfx_color_new_rgb_i16((i & 4) ? 0xffff : 0,
    829                             (i & 2) ? 0xffff : 0, (i & 1) ? 0xffff : 0, &color);
    830                         if (rc != EOK)
    831                                 goto error;
    832                 }
     742                rc = gfx_color_new_rgb_i16((i & 4) ? 0xffff : 0,
     743                    (i & 2) ? 0xffff : 0, (i & 1) ? 0xffff : 0, &color);
     744                if (rc != EOK)
     745                        goto error;
    833746
    834747                fmt.color = color;
    835                 fmt.underline = !fmt.underline;
    836748
    837749                pos.x = w / 20;
    838750                pos.y = (6 + i) * h / 15;
    839                 rc = gfx_puttext(&pos, &fmt, "The quick brown fox jumps over the lazy dog.");
     751                rc = gfx_puttext(font, &pos, &fmt, "The quick brown fox jumps over the lazy dog.");
    840752                if (rc != EOK)
    841753                        goto error;
     
    845757
    846758        for (i = 0; i < 10; i++) {
    847                 demo_msleep(500);
    848                 if (quit)
    849                         break;
    850         }
    851 
    852         return EOK;
    853 error:
    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  */
    863 static 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);
     759                fibril_usleep(500 * 1000);
    929760                if (quit)
    930761                        break;
     
    1023854                }
    1024855
    1025                 demo_msleep(500);
     856                fibril_usleep(500 * 1000);
     857
    1026858                if (quit)
    1027859                        break;
     
    1040872 *
    1041873 * @param gc Graphic context
    1042  */
    1043 static errno_t demo_loop(gfx_context_t *gc)
    1044 {
    1045         errno_t rc;
    1046 
    1047         (void) demo_font_init(gc, scr_width, scr_height);
     874 * @param w Width
     875 * @param h Height
     876 */
     877static errno_t demo_loop(gfx_context_t *gc, gfx_coord_t w, gfx_coord_t h)
     878{
     879        errno_t rc;
     880
     881        (void) demo_font_init(gc, w, h);
    1048882
    1049883        while (!quit) {
    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);
     884                rc = demo_rects(gc, w, h);
     885                if (rc != EOK)
     886                        goto error;
     887
     888                rc = demo_bitmap(gc, w, h);
     889                if (rc != EOK)
     890                        goto error;
     891
     892                rc = demo_bitmap2(gc, w, h);
     893                if (rc != EOK)
     894                        goto error;
     895
     896                rc = demo_bitmap_kc(gc, w, h);
     897                if (rc != EOK)
     898                        goto error;
     899
     900                rc = demo_text(gc, w, h);
     901                if (rc != EOK)
     902                        goto error;
     903
     904                rc = demo_clip(gc, w, h);
    1075905                if (rc != EOK)
    1076906                        goto error;
     
    1087917static errno_t demo_console(void)
    1088918{
     919        console_ctrl_t *con = NULL;
     920        console_gc_t *cgc = NULL;
    1089921        gfx_context_t *gc;
    1090         sysarg_t cols, rows;
    1091         errno_t rc;
    1092 
     922        errno_t rc;
     923
     924        printf("Init console..\n");
    1093925        con = console_init(stdin, stdout);
    1094926        if (con == NULL)
    1095927                return EIO;
    1096928
    1097         rc = console_get_size(con, &cols, &rows);
    1098         if (rc != EOK)
    1099                 return rc;
    1100 
     929        printf("Create console GC\n");
    1101930        rc = console_gc_create(con, stdout, &cgc);
    1102931        if (rc != EOK)
     
    1105934        gc = console_gc_get_ctx(cgc);
    1106935
    1107         /* Currently console is always text. */
    1108         textmode = true;
    1109 
    1110         scr_width = cols;
    1111         scr_height = rows;
    1112 
    1113         rc = demo_loop(gc);
     936        rc = demo_loop(gc, 80, 25);
    1114937        if (rc != EOK)
    1115938                return rc;
     
    1120943
    1121944        return EOK;
    1122 }
    1123 
    1124 static 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;
    1136945}
    1137946
     
    1139948static errno_t demo_ui(const char *display_spec)
    1140949{
     950        ui_t *ui = NULL;
    1141951        ui_wnd_params_t params;
    1142952        ui_window_t *window = NULL;
     
    1145955        gfx_rect_t wrect;
    1146956        gfx_coord2_t off;
    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;
     957        errno_t rc;
     958
     959        printf("Init UI..\n");
    1152960
    1153961        rc = ui_create(display_spec, &ui);
    1154962        if (rc != EOK) {
    1155963                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");
    1162964                goto error;
    1163965        }
     
    1171973        params.caption = "GFX Demo";
    1172974
    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 
    1179975        /*
    1180976         * Compute window rectangle such that application area corresponds
    1181977         * to rect
    1182978         */
    1183         ui_wdecor_rect_from_app(ui, params.style, &rect, &wrect);
     979        ui_wdecor_rect_from_app(params.style, &rect, &wrect);
    1184980        off = wrect.p0;
    1185981        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;
    1194982
    1195983        rc = ui_window_create(ui, &params, &window);
     
    1207995        }
    1208996
    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);
     997        task_retval(0);
     998
     999        rc = demo_loop(gc, rect.p1.x, rect.p1.y);
     1000        if (rc != EOK)
     1001                goto error;
     1002
    12301003        ui_window_destroy(window);
    12311004        ui_destroy(ui);
     
    12491022        errno_t rc;
    12501023
     1024        printf("Init display..\n");
     1025
    12511026        rc = display_open(display_svc, &display);
    12521027        if (rc != EOK) {
     
    12601035        params.rect.p1.x = 400;
    12611036        params.rect.p1.y = 300;
    1262         params.caption = "GFX Demo";
    12631037
    12641038        rc = display_window_create(display, &params, &wnd_cb, NULL, &window);
     
    12761050        task_retval(0);
    12771051
    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);
     1052        rc = demo_loop(gc, 400, 300);
    12841053        if (rc != EOK)
    12851054                return rc;
     
    12951064}
    12961065
    1297 static void demo_quit(void)
    1298 {
    1299         fibril_mutex_lock(&quit_lock);
     1066static void wnd_close_event(void *arg)
     1067{
     1068        printf("Close event\n");
    13001069        quit = true;
    1301         fibril_mutex_unlock(&quit_lock);
    1302         fibril_condvar_broadcast(&quit_cv);
    1303 }
    1304 
    1305 static void wnd_close_event(void *arg)
    1306 {
    1307         demo_quit();
    1308 }
    1309 
    1310 static 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         }
    13291070}
    13301071
    13311072static void wnd_kbd_event(void *arg, kbd_event_t *event)
    13321073{
    1333         (void)arg;
    1334         demo_kbd_event(event);
    1335 }
    1336 
    1337 static 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;
     1074        printf("Keyboard event type=%d key=%d\n", event->type, event->key);
     1075        if (event->type == KEY_PRESS)
     1076                quit = true;
    13461077}
    13471078
    13481079static void uiwnd_close_event(ui_window_t *window, void *arg)
    13491080{
    1350         demo_quit();
     1081        printf("Close event\n");
     1082        quit = true;
    13511083}
    13521084
    13531085static void uiwnd_kbd_event(ui_window_t *window, void *arg, kbd_event_t *event)
    13541086{
    1355         (void)window;
    1356         (void)arg;
    1357         demo_kbd_event(event);
     1087        printf("Keyboard event type=%d key=%d\n", event->type, event->key);
     1088        if (event->type == KEY_PRESS)
     1089                quit = true;
    13581090}
    13591091
     
    13671099        errno_t rc;
    13681100        const char *display_svc = DISPLAY_DEFAULT;
    1369         const char *ui_display_spec = UI_ANY_DEFAULT;
    13701101        int i;
    13711102
     
    13801111                        }
    13811112
    1382                         display_svc = ui_display_spec = argv[i++];
     1113                        display_svc = argv[i++];
    13831114                } else {
    13841115                        printf("Invalid option '%s'.\n", argv[i]);
     
    13881119        }
    13891120
    1390         if (i >= argc || str_cmp(argv[i], "ui") == 0) {
    1391                 rc = demo_ui(ui_display_spec);
     1121        if (i >= argc || str_cmp(argv[i], "display") == 0) {
     1122                rc = demo_display(display_svc);
    13921123                if (rc != EOK)
    13931124                        return 1;
     
    13961127                if (rc != EOK)
    13971128                        return 1;
    1398         } else if (str_cmp(argv[i], "display") == 0) {
    1399                 rc = demo_display(display_svc);
     1129        } else if (str_cmp(argv[i], "ui") == 0) {
     1130                rc = demo_ui(display_svc);
    14001131                if (rc != EOK)
    14011132                        return 1;
Note: See TracChangeset for help on using the changeset viewer.