Changeset dc5c303 in mainline for uspace/app
- Timestamp:
- 2023-12-28T13:59:23Z (2 years ago)
- Children:
- 6b66de6b
- Parents:
- 42c2e65 (diff), f87ff8e (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - git-author:
- boba-buba <120932204+boba-buba@…> (2023-12-28 13:59:23)
- git-committer:
- GitHub <noreply@…> (2023-12-28 13:59:23)
- Location:
- uspace/app
- Files:
-
- 39 added
- 43 edited
- 2 moved
-
calculator/calculator.c (modified) (4 diffs)
-
corecfg/meson.build (modified) (2 diffs)
-
disp/disp.c (modified) (3 diffs)
-
display-cfg/display-cfg.c (added)
-
display-cfg/display-cfg.h (added)
-
display-cfg/doc/doxygroups.h (added)
-
display-cfg/main.c (added)
-
display-cfg/meson.build (added)
-
display-cfg/seats.c (added)
-
display-cfg/seats.h (added)
-
display-cfg/test/display-cfg.c (added)
-
display-cfg/test/main.c (added)
-
display-cfg/test/seats.c (added)
-
display-cfg/types/display-cfg.h (added)
-
display-cfg/types/seats.h (added)
-
edit/edit.c (modified) (5 diffs)
-
gfxdemo/gfxdemo.c (modified) (22 diffs)
-
gfxdemo/gfxdemo.h (added)
-
hbench/benchlist.c (modified) (2 diffs)
-
hbench/env.c (modified) (1 diff)
-
hbench/hbench.h (modified) (3 diffs)
-
hbench/ipc/read1k.c (added)
-
hbench/ipc/write1k.c (added)
-
hbench/meson.build (modified) (3 diffs)
-
hbench/syscall/taskgetid.c (added)
-
meson.build (modified) (3 diffs)
-
mkbd/meson.build (modified) (1 diff)
-
modplay/meson.build (modified) (1 diff)
-
nav/menu.c (modified) (3 diffs)
-
netecho/meson.build (modified) (1 diff)
-
nterm/meson.build (modified) (1 diff)
-
ofw/doc/doxygroups.h (added)
-
ofw/meson.build (added)
-
ofw/ofw.c (added)
-
ping/meson.build (modified) (1 diff)
-
taskbar-cfg/doc/doxygroups.h (added)
-
taskbar-cfg/main.c (added)
-
taskbar-cfg/meson.build (added)
-
taskbar-cfg/smeedit.c (added)
-
taskbar-cfg/smeedit.h (moved) (moved from kernel/generic/include/stdlib.h ) (2 diffs)
-
taskbar-cfg/startmenu.c (added)
-
taskbar-cfg/startmenu.h (added)
-
taskbar-cfg/taskbar-cfg.c (added)
-
taskbar-cfg/taskbar-cfg.h (added)
-
taskbar-cfg/test/main.c (added)
-
taskbar-cfg/test/startmenu.c (added)
-
taskbar-cfg/test/taskbar-cfg.c (added)
-
taskbar-cfg/types/smeedit.h (moved) (moved from kernel/generic/include/mem.h ) (2 diffs)
-
taskbar-cfg/types/startmenu.h (added)
-
taskbar-cfg/types/taskbar-cfg.h (added)
-
taskbar/clock.c (modified) (14 diffs)
-
taskbar/clock.h (modified) (1 diff)
-
taskbar/doc/doxygroups.h (modified) (1 diff)
-
taskbar/main.c (modified) (1 diff)
-
taskbar/meson.build (modified) (3 diffs)
-
taskbar/taskbar.c (modified) (15 diffs)
-
taskbar/taskbar.h (modified) (1 diff)
-
taskbar/taskbar.sif (added)
-
taskbar/tbsmenu.c (added)
-
taskbar/tbsmenu.h (added)
-
taskbar/test/main.c (modified) (2 diffs)
-
taskbar/test/tbsmenu.c (added)
-
taskbar/test/wndlist.c (modified) (3 diffs)
-
taskbar/types/clock.h (modified) (2 diffs)
-
taskbar/types/taskbar.h (modified) (4 diffs)
-
taskbar/types/tbsmenu.h (added)
-
taskbar/types/wndlist.h (modified) (5 diffs)
-
taskbar/wndlist.c (modified) (14 diffs)
-
taskbar/wndlist.h (modified) (2 diffs)
-
terminal/terminal.c (modified) (3 diffs)
-
terminal/terminal.h (modified) (2 diffs)
-
tester/fault/fault1.c (modified) (1 diff)
-
tester/ipc/readwrite.c (added)
-
tester/ipc/readwrite.def (added)
-
tester/meson.build (modified) (3 diffs)
-
tester/mm/common.c (modified) (1 diff)
-
tester/print/print5.c (modified) (1 diff)
-
tester/tester.c (modified) (1 diff)
-
tester/tester.h (modified) (1 diff)
-
tetris/meson.build (modified) (1 diff)
-
top/meson.build (modified) (1 diff)
-
trace/meson.build (modified) (1 diff)
-
uidemo/uidemo.c (modified) (17 diffs)
-
wifi_supplicant/wifi_supplicant.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/calculator/calculator.c
r42c2e65 rdc5c303 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * Copyright (c) 2016 Martin Decky 4 4 * All rights reserved. … … 46 46 #include <ui/entry.h> 47 47 #include <ui/fixed.h> 48 #include <ui/menu.h> 48 49 #include <ui/menubar.h> 49 #include <ui/menu .h>50 #include <ui/menudd.h> 50 51 #include <ui/menuentry.h> 51 52 #include <ui/pbutton.h> … … 896 897 } 897 898 898 rc = ui_menu_ create(calc.menubar, "~F~ile", &mfile);899 rc = ui_menu_dd_create(calc.menubar, "~F~ile", NULL, &mfile); 899 900 if (rc != EOK) { 900 901 printf("Error creating menu.\n"); … … 910 911 ui_menu_entry_set_cb(mexit, calc_file_exit, (void *) &calc); 911 912 912 rc = ui_menu_ create(calc.menubar, "~E~dit", &medit);913 rc = ui_menu_dd_create(calc.menubar, "~E~dit", NULL, &medit); 913 914 if (rc != EOK) { 914 915 printf("Error creating menu.\n"); -
uspace/app/corecfg/meson.build
r42c2e65 rdc5c303 1 1 # 2 # Copyright (c) 20 13 Jiri Svoboda2 # Copyright (c) 2023 Jiri Svoboda 3 3 # All rights reserved. 4 4 # … … 27 27 # 28 28 29 deps = [ 'corecfg' ] 29 30 src = files('corecfg.c') -
uspace/app/disp/disp.c
r42c2e65 rdc5c303 56 56 printf(" %s assign-dev <device> <seat>\n", NAME); 57 57 printf(" %s unassign-dev <device>\n", NAME); 58 printf(" %s list-dev <seat>\n", NAME); 58 59 } 59 60 … … 393 394 } 394 395 396 /** List dev subcommand. 397 * 398 * @param dcfg_svc Display configuration service name 399 * @param argc Number of arguments 400 * @param argv Arguments 401 * @return EOK on success or an erro code 402 */ 403 static errno_t list_dev(const char *dcfg_svc, int argc, char *argv[]) 404 { 405 dispcfg_t *dispcfg; 406 char *seat_name; 407 sysarg_t seat_id; 408 dispcfg_dev_list_t *dev_list; 409 size_t i; 410 char *svc_name; 411 table_t *table = NULL; 412 errno_t rc; 413 414 if (argc < 1) { 415 printf(NAME ": Missing arguments.\n"); 416 print_syntax(); 417 return EINVAL; 418 } 419 420 if (argc > 1) { 421 printf(NAME ": Too many arguments.\n"); 422 print_syntax(); 423 return EINVAL; 424 } 425 426 seat_name = argv[0]; 427 428 rc = dispcfg_open(dcfg_svc, NULL, NULL, &dispcfg); 429 if (rc != EOK) { 430 printf(NAME ": Failed connecting to display configuration " 431 "service: %s.\n", str_error(rc)); 432 return rc; 433 } 434 435 rc = seat_find_by_name(dispcfg, seat_name, &seat_id); 436 if (rc != EOK) { 437 printf(NAME ": Seat '%s' not found.\n", seat_name); 438 dispcfg_close(dispcfg); 439 return ENOENT; 440 } 441 442 rc = dispcfg_get_asgn_dev_list(dispcfg, seat_id, &dev_list); 443 if (rc != EOK) { 444 printf(NAME ": Failed getting seat list.\n"); 445 dispcfg_close(dispcfg); 446 return rc; 447 } 448 449 rc = table_create(&table); 450 if (rc != EOK) { 451 printf("Memory allocation failed.\n"); 452 dispcfg_free_dev_list(dev_list); 453 dispcfg_close(dispcfg); 454 return rc; 455 } 456 457 table_header_row(table); 458 table_printf(table, "Device Name\n"); 459 460 for (i = 0; i < dev_list->ndevs; i++) { 461 rc = loc_service_get_name(dev_list->devs[i], &svc_name); 462 if (rc != EOK) { 463 printf("Failed getting name of service %zu\n", 464 (size_t)dev_list->devs[i]); 465 continue; 466 } 467 468 table_printf(table, "%s\n", svc_name); 469 free(svc_name); 470 } 471 472 if (dev_list->ndevs != 0) { 473 rc = table_print_out(table, stdout); 474 if (rc != EOK) { 475 printf("Error printing table.\n"); 476 table_destroy(table); 477 dispcfg_free_dev_list(dev_list); 478 dispcfg_close(dispcfg); 479 return rc; 480 } 481 } 482 483 dispcfg_close(dispcfg); 484 return EOK; 485 } 486 395 487 int main(int argc, char *argv[]) 396 488 { … … 423 515 if (rc != EOK) 424 516 return 1; 517 } else if (str_cmp(argv[1], "list-dev") == 0) { 518 rc = list_dev(dispcfg_svc, argc - 2, argv + 2); 519 if (rc != EOK) 520 return 1; 425 521 } else { 426 522 printf(NAME ": Unknown command '%s'.\n", argv[1]); -
uspace/app/edit/edit.c
r42c2e65 rdc5c303 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * Copyright (c) 2012 Martin Sucha 4 4 * All rights reserved. … … 60 60 #include <ui/menu.h> 61 61 #include <ui/menubar.h> 62 #include <ui/menudd.h> 62 63 #include <ui/menuentry.h> 63 64 #include <ui/promptdialog.h> … … 430 431 } 431 432 432 rc = ui_menu_ create(edit->menubar, "~F~ile", &mfile);433 rc = ui_menu_dd_create(edit->menubar, "~F~ile", NULL, &mfile); 433 434 if (rc != EOK) { 434 435 printf("Error creating menu.\n"); … … 466 467 ui_menu_entry_set_cb(mexit, edit_file_exit, (void *) edit); 467 468 468 rc = ui_menu_ create(edit->menubar, "~E~dit", &medit);469 rc = ui_menu_dd_create(edit->menubar, "~E~dit", NULL, &medit); 469 470 if (rc != EOK) { 470 471 printf("Error creating menu.\n"); … … 518 519 ui_menu_entry_set_cb(mselall, edit_edit_select_all, (void *) edit); 519 520 520 rc = ui_menu_ create(edit->menubar, "~S~earch", &msearch);521 rc = ui_menu_dd_create(edit->menubar, "~S~earch", NULL, &msearch); 521 522 if (rc != EOK) { 522 523 printf("Error creating menu.\n"); -
uspace/app/gfxdemo/gfxdemo.c
r42c2e65 rdc5c303 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 51 51 #include <ui/window.h> 52 52 #include <ui/wdecor.h> 53 #include "gfxdemo.h" 53 54 54 55 static void wnd_close_event(void *); … … 68 69 }; 69 70 71 static void demo_kbd_event(kbd_event_t *); 72 70 73 static bool quit = false; 74 static FIBRIL_MUTEX_INITIALIZE(quit_lock); 75 static FIBRIL_CONDVAR_INITIALIZE(quit_cv); 71 76 static gfx_typeface_t *tface; 72 77 static gfx_font_t *font; 73 78 static gfx_coord_t vpad; 79 static console_ctrl_t *con = NULL; 80 static ui_t *ui; 74 81 75 82 /** Determine if we are running in text mode. … … 83 90 // XXX Need a proper way to determine text mode 84 91 return w <= 80; 92 } 93 94 /** Sleep until timeout or quit request. 95 * 96 * @param msec Number of microseconds to sleep for 97 */ 98 static void demo_msleep(unsigned msec) 99 { 100 errno_t rc; 101 usec_t usec; 102 cons_event_t cevent; 103 104 if (ui != NULL) 105 ui_unlock(ui); 106 fibril_mutex_lock(&quit_lock); 107 if (!quit) { 108 if (con != NULL) { 109 usec = (usec_t)msec * 1000; 110 while (usec > 0 && !quit) { 111 rc = console_get_event_timeout(con, &cevent, &usec); 112 if (rc == EOK) { 113 if (cevent.type == CEV_KEY) { 114 fibril_mutex_unlock(&quit_lock); 115 demo_kbd_event(&cevent.ev.key); 116 fibril_mutex_lock(&quit_lock); 117 } 118 } 119 } 120 } else { 121 (void) fibril_condvar_wait_timeout(&quit_cv, &quit_lock, 122 (usec_t)msec * 1000); 123 } 124 } 125 fibril_mutex_unlock(&quit_lock); 126 if (ui != NULL) 127 ui_lock(ui); 85 128 } 86 129 … … 316 359 gfx_color_delete(color); 317 360 318 fibril_usleep(500 * 1000); 319 361 demo_msleep(500); 320 362 if (quit) 321 363 break; … … 478 520 if (rc != EOK) 479 521 goto error; 480 fibril_usleep(250 * 1000); 481 522 523 demo_msleep(250); 482 524 if (quit) 483 525 goto out; … … 539 581 } 540 582 541 fibril_usleep(500 * 1000); 542 583 demo_msleep(500); 543 584 if (quit) 544 585 break; … … 600 641 } 601 642 602 fibril_usleep(500 * 1000); 603 643 demo_msleep(500); 604 644 if (quit) 605 645 break; … … 791 831 792 832 for (i = 0; i < 10; i++) { 793 fibril_usleep(500 * 1000);833 demo_msleep(500); 794 834 if (quit) 795 835 break; … … 872 912 873 913 for (i = 0; i < 10; i++) { 874 fibril_usleep(500 * 1000);914 demo_msleep(500); 875 915 if (quit) 876 916 break; … … 969 1009 } 970 1010 971 fibril_usleep(500 * 1000); 972 1011 demo_msleep(500); 973 1012 if (quit) 974 1013 break; … … 1036 1075 static errno_t demo_console(void) 1037 1076 { 1038 console_ctrl_t *con = NULL;1039 1077 console_gc_t *cgc = NULL; 1040 1078 gfx_context_t *gc; 1041 errno_t rc;1042 1043 printf("Init console..\n"); 1079 sysarg_t cols, rows; 1080 errno_t rc; 1081 1044 1082 con = console_init(stdin, stdout); 1045 1083 if (con == NULL) 1046 1084 return EIO; 1047 1085 1048 printf("Create console GC\n"); 1086 rc = console_get_size(con, &cols, &rows); 1087 if (rc != EOK) 1088 return rc; 1089 1049 1090 rc = console_gc_create(con, stdout, &cgc); 1050 1091 if (rc != EOK) … … 1053 1094 gc = console_gc_get_ctx(cgc); 1054 1095 1055 rc = demo_loop(gc, 80, 25);1096 rc = demo_loop(gc, cols, rows); 1056 1097 if (rc != EOK) 1057 1098 return rc; … … 1062 1103 1063 1104 return EOK; 1105 } 1106 1107 static errno_t demo_ui_fibril(void *arg) 1108 { 1109 demo_ui_args_t *args = (demo_ui_args_t *)arg; 1110 errno_t rc; 1111 1112 ui_lock(args->ui); 1113 rc = demo_loop(args->gc, args->dims.x, args->dims.y); 1114 ui_unlock(args->ui); 1115 ui_quit(args->ui); 1116 return rc; 1064 1117 } 1065 1118 … … 1067 1120 static errno_t demo_ui(const char *display_spec) 1068 1121 { 1069 ui_t *ui = NULL;1070 1122 ui_wnd_params_t params; 1071 1123 ui_window_t *window = NULL; … … 1074 1126 gfx_rect_t wrect; 1075 1127 gfx_coord2_t off; 1076 errno_t rc; 1077 1078 printf("Init UI..\n"); 1128 gfx_rect_t ui_rect; 1129 gfx_coord2_t dims; 1130 demo_ui_args_t args; 1131 fid_t fid; 1132 errno_t rc; 1079 1133 1080 1134 rc = ui_create(display_spec, &ui); 1081 1135 if (rc != EOK) { 1082 1136 printf("Error initializing UI (%s)\n", display_spec); 1137 goto error; 1138 } 1139 1140 rc = ui_get_rect(ui, &ui_rect); 1141 if (rc != EOK) { 1142 printf("Error getting display size.\n"); 1083 1143 goto error; 1084 1144 } … … 1091 1151 ui_wnd_params_init(¶ms); 1092 1152 params.caption = "GFX Demo"; 1153 1154 /* Do not decorate the window in fullscreen mode */ 1155 if (ui_is_fullscreen(ui)) 1156 params.style &= ~ui_wds_decorated; 1093 1157 1094 1158 /* … … 1100 1164 gfx_rect_rtranslate(&off, &wrect, ¶ms.rect); 1101 1165 1166 gfx_rect_dims(&ui_rect, &dims); 1167 1168 /* Make sure window is not larger than the entire screen */ 1169 if (params.rect.p1.x > dims.x) 1170 params.rect.p1.x = dims.x; 1171 if (params.rect.p1.y > dims.y) 1172 params.rect.p1.y = dims.y; 1173 1102 1174 rc = ui_window_create(ui, ¶ms, &window); 1103 1175 if (rc != EOK) { … … 1114 1186 } 1115 1187 1116 task_retval(0); 1117 1118 rc = demo_loop(gc, rect.p1.x, rect.p1.y); 1119 if (rc != EOK) 1120 goto error; 1121 1188 ui_window_get_app_rect(window, &rect); 1189 gfx_rect_dims(&rect, &dims); 1190 1191 if (!ui_is_fullscreen(ui)) 1192 task_retval(0); 1193 1194 args.gc = gc; 1195 args.dims = dims; 1196 args.ui = ui; 1197 1198 fid = fibril_create(demo_ui_fibril, (void *)&args); 1199 if (fid == 0) { 1200 rc = ENOMEM; 1201 goto error; 1202 } 1203 1204 fibril_add_ready(fid); 1205 1206 ui_run(ui); 1122 1207 ui_window_destroy(window); 1123 1208 ui_destroy(ui); … … 1141 1226 errno_t rc; 1142 1227 1143 printf("Init display..\n");1144 1145 1228 rc = display_open(display_svc, &display); 1146 1229 if (rc != EOK) { … … 1184 1267 } 1185 1268 1269 static void demo_quit(void) 1270 { 1271 fibril_mutex_lock(&quit_lock); 1272 quit = true; 1273 fibril_mutex_unlock(&quit_lock); 1274 fibril_condvar_broadcast(&quit_cv); 1275 } 1276 1186 1277 static void wnd_close_event(void *arg) 1187 1278 { 1188 printf("Close event\n"); 1189 quit = true; 1279 demo_quit(); 1280 } 1281 1282 static void demo_kbd_event(kbd_event_t *event) 1283 { 1284 if (event->type == KEY_PRESS) { 1285 /* Ctrl-Q */ 1286 if ((event->mods & KM_CTRL) != 0 && 1287 (event->mods & KM_ALT) == 0 && 1288 (event->mods & KM_SHIFT) == 0 && 1289 event->key == KC_Q) { 1290 demo_quit(); 1291 } 1292 1293 /* Escape */ 1294 if ((event->mods & KM_CTRL) == 0 && 1295 (event->mods & KM_ALT) == 0 && 1296 (event->mods & KM_SHIFT) == 0 && 1297 event->key == KC_ESCAPE) { 1298 demo_quit(); 1299 } 1300 } 1190 1301 } 1191 1302 1192 1303 static void wnd_kbd_event(void *arg, kbd_event_t *event) 1193 1304 { 1194 printf("Keyboard event type=%d key=%d\n", event->type, event->key); 1195 if (event->type == KEY_PRESS) 1196 quit = true; 1305 (void)arg; 1306 demo_kbd_event(event); 1197 1307 } 1198 1308 1199 1309 static void uiwnd_close_event(ui_window_t *window, void *arg) 1200 1310 { 1201 printf("Close event\n"); 1202 quit = true; 1311 demo_quit(); 1203 1312 } 1204 1313 1205 1314 static void uiwnd_kbd_event(ui_window_t *window, void *arg, kbd_event_t *event) 1206 1315 { 1207 printf("Keyboard event type=%d key=%d\n", event->type, event->key);1208 if (event->type == KEY_PRESS)1209 quit = true;1316 (void)window; 1317 (void)arg; 1318 demo_kbd_event(event); 1210 1319 } 1211 1320 … … 1219 1328 errno_t rc; 1220 1329 const char *display_svc = DISPLAY_DEFAULT; 1221 const char *ui_display_spec = UI_ DISPLAY_DEFAULT;1330 const char *ui_display_spec = UI_ANY_DEFAULT; 1222 1331 int i; 1223 1332 -
uspace/app/hbench/benchlist.c
r42c2e65 rdc5c303 1 1 /* 2 * Copyright (c) 20 18Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * Copyright (c) 2018 Vojtech Horky 4 4 * All rights reserved. … … 45 45 &benchmark_malloc2, 46 46 &benchmark_ns_ping, 47 &benchmark_ping_pong 47 &benchmark_ping_pong, 48 &benchmark_read1k, 49 &benchmark_taskgetid, 50 &benchmark_write1k, 48 51 }; 49 52 -
uspace/app/hbench/env.c
r42c2e65 rdc5c303 97 97 98 98 env->run_count = DEFAULT_RUN_COUNT; 99 env->minimal_run_duration_nanos = MSEC2NSEC(DEFAULT_MIN_RUN_DURATION_ SEC);99 env->minimal_run_duration_nanos = MSEC2NSEC(DEFAULT_MIN_RUN_DURATION_MSEC); 100 100 101 101 return EOK; -
uspace/app/hbench/hbench.h
r42c2e65 rdc5c303 1 1 /* 2 * Copyright (c) 20 18Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * Copyright (c) 2019 Vojtech Horky 4 4 * All rights reserved. … … 43 43 44 44 #define DEFAULT_RUN_COUNT 10 45 #define DEFAULT_MIN_RUN_DURATION_ SEC 1045 #define DEFAULT_MIN_RUN_DURATION_MSEC 1000 46 46 47 47 /** Single run information. … … 139 139 extern benchmark_t benchmark_ns_ping; 140 140 extern benchmark_t benchmark_ping_pong; 141 extern benchmark_t benchmark_read1k; 142 extern benchmark_t benchmark_taskgetid; 143 extern benchmark_t benchmark_write1k; 141 144 142 145 #endif -
uspace/app/hbench/meson.build
r42c2e65 rdc5c303 1 1 # 2 # Copyright (c) 20 18Jiri Svoboda2 # Copyright (c) 2023 Jiri Svoboda 3 3 # All rights reserved. 4 4 # … … 27 27 # 28 28 29 deps = [ 'math' ]29 deps = [ 'math', 'ipctest' ] 30 30 src = files( 31 31 'benchlist.c', … … 38 38 'ipc/ns_ping.c', 39 39 'ipc/ping_pong.c', 40 'ipc/read1k.c', 41 'ipc/write1k.c', 40 42 'malloc/malloc1.c', 41 43 'malloc/malloc2.c', 42 44 'synch/fibril_mutex.c', 45 'syscall/taskgetid.c' 43 46 ) -
uspace/app/meson.build
r42c2e65 rdc5c303 40 40 'df', 41 41 'disp', 42 'display-cfg', 42 43 'dnscfg', 43 44 'dnsres', … … 72 73 'nterm', 73 74 'pcapctl', 75 'ofw', 74 76 'pci', 75 77 'ping', … … 82 84 'sysinst', 83 85 'taskbar', 86 'taskbar-cfg', 84 87 'taskdump', 85 88 'terminal', -
uspace/app/mkbd/meson.build
r42c2e65 rdc5c303 27 27 # 28 28 29 deps = [ 'usb', 'usbdev', 'usbhid', 'drv' ]29 deps = [ 'usb', 'usbdev', 'usbhid', 'drv', 'console' ] 30 30 src = files('main.c') -
uspace/app/modplay/meson.build
r42c2e65 rdc5c303 27 27 # 28 28 29 deps = [ 'trackmod', 'hound', 'pcm' ]29 deps = [ 'trackmod', 'hound', 'pcm', 'console' ] 30 30 src = files('modplay.c') 31 31 -
uspace/app/nav/menu.c
r42c2e65 rdc5c303 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 39 39 #include <ui/menu.h> 40 40 #include <ui/menubar.h> 41 #include <ui/menudd.h> 41 42 #include <ui/menuentry.h> 42 43 #include "menu.h" … … 72 73 goto error; 73 74 74 rc = ui_menu_ create(menu->menubar, "~F~ile", &mfile);75 rc = ui_menu_dd_create(menu->menubar, "~F~ile", NULL, &mfile); 75 76 if (rc != EOK) 76 77 goto error; -
uspace/app/netecho/meson.build
r42c2e65 rdc5c303 27 27 # 28 28 29 deps = [ 'inet' ]29 deps = [ 'inet', 'console' ] 30 30 src = files('comm.c', 'netecho.c') -
uspace/app/nterm/meson.build
r42c2e65 rdc5c303 27 27 # 28 28 29 deps = [ 'inet' ]29 deps = [ 'inet', 'console' ] 30 30 src = files('conn.c', 'nterm.c') -
uspace/app/ping/meson.build
r42c2e65 rdc5c303 27 27 # 28 28 29 deps = [ 'inet' ]29 deps = [ 'inet', 'console' ] 30 30 src = files('ping.c') -
uspace/app/taskbar-cfg/smeedit.h
r42c2e65 rdc5c303 1 1 /* 2 * Copyright (c) 20 06 Ondrej Palkovsky2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup kernel_generic_mm29 /** @addtogroup taskbar-cfg 30 30 * @{ 31 31 */ 32 /** @file 32 /** 33 * @file Start menu entry edit dialog 33 34 */ 34 35 35 #ifndef KERN_STDLIB_H_36 #define KERN_STDLIB_H_36 #ifndef SMEEDIT_H 37 #define SMEEDIT_H 37 38 38 #include <stddef.h> 39 #include "types/smeedit.h" 40 #include "types/startmenu.h" 39 41 40 extern void *malloc(size_t) 41 __attribute__((malloc)); 42 extern void *realloc(void *, size_t) 43 __attribute__((warn_unused_result)); 44 extern void free(void *); 42 extern errno_t smeedit_create(startmenu_t *, startmenu_entry_t *, smeedit_t **); 43 extern void smeedit_destroy(smeedit_t *); 45 44 46 45 #endif -
uspace/app/taskbar-cfg/types/smeedit.h
r42c2e65 rdc5c303 1 1 /* 2 * Copyright (c) 20 01-2004 Jakub Jermar2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup kernel_generic29 /** @addtogroup taskbar-cfg 30 30 * @{ 31 31 */ 32 /** @file 32 /** 33 * @file Start menu entry edit dialog 33 34 */ 34 35 35 #ifndef KERN_MEM_H_36 #define KERN_MEM_H_36 #ifndef TYPES_SMEEDIT_H 37 #define TYPES_SMEEDIT_H 37 38 38 #include <stddef.h> 39 #include <stdint.h> 40 #include <cc.h> 39 #include <ui/fixed.h> 40 #include <ui/label.h> 41 #include <ui/entry.h> 42 #include <ui/pbutton.h> 43 #include <ui/window.h> 41 44 42 #ifdef CONFIG_LTO 43 #define DO_NOT_DISCARD ATTRIBUTE_USED 44 #else 45 #define DO_NOT_DISCARD 46 #endif 47 48 #define memset(dst, val, cnt) __builtin_memset((dst), (val), (cnt)) 49 #define memcpy(dst, src, cnt) __builtin_memcpy((dst), (src), (cnt)) 50 #define memcmp(s1, s2, cnt) __builtin_memcmp((s1), (s2), (cnt)) 51 52 extern void memsetb(void *, size_t, uint8_t) 53 __attribute__((nonnull(1))); 54 extern void memsetw(void *, size_t, uint16_t) 55 __attribute__((nonnull(1))); 56 extern void *memmove(void *, const void *, size_t) 57 __attribute__((nonnull(1, 2))) DO_NOT_DISCARD; 45 /** Start menu entry edit dialog */ 46 typedef struct smeedit { 47 /** Containing start menu configuration tab */ 48 struct startmenu *startmenu; 49 /** Start menu entry or @c NULL if creating a new entry */ 50 struct startmenu_entry *smentry; 51 /** Window */ 52 ui_window_t *window; 53 /** Fixed layout */ 54 ui_fixed_t *fixed; 55 /** 'Caption' label */ 56 ui_label_t *lcaption; 57 /** Caption entry */ 58 ui_entry_t *ecaption; 59 /** 'Command' label */ 60 ui_label_t *lcmd; 61 /** Command entry */ 62 ui_entry_t *ecmd; 63 /** OK buttion */ 64 ui_pbutton_t *bok; 65 /** Cancel button */ 66 ui_pbutton_t *bcancel; 67 } smeedit_t; 58 68 59 69 #endif -
uspace/app/taskbar/clock.c
r42c2e65 rdc5c303 30 30 * @{ 31 31 */ 32 /** @file Task bar clock.32 /** @file Taskbar clock. 33 33 * 34 34 * Displays the current time in an inset frame. … … 53 53 static void taskbar_clock_timer(void *); 54 54 55 /** Task bar clock control ops */55 /** Taskbar clock control ops */ 56 56 static ui_control_ops_t taskbar_clock_ctl_ops = { 57 57 .destroy = taskbar_clock_ctl_destroy, … … 61 61 }; 62 62 63 /** Create task bar clock.63 /** Create taskbar clock. 64 64 * 65 65 * @param window Containing window … … 102 102 } 103 103 104 /** Destroy task bar clock.105 * 106 * @param clock Task bar clock104 /** Destroy taskbar clock. 105 * 106 * @param clock Taskbar clock 107 107 */ 108 108 void taskbar_clock_destroy(taskbar_clock_t *clock) … … 149 149 } 150 150 151 /** Paint task bar clock.152 * 153 * @param clock Task bar clock151 /** Paint taskbar clock. 152 * 153 * @param clock Taskbar clock 154 154 */ 155 155 errno_t taskbar_clock_paint(taskbar_clock_t *clock) … … 208 208 } 209 209 210 /** Handle task bar clock keyboard event.211 * 212 * @param clock Task bar clock210 /** Handle taskbar clock keyboard event. 211 * 212 * @param clock Taskbar clock 213 213 * @param event Keyboard event 214 214 * @return ui_claimed iff event was claimed … … 219 219 } 220 220 221 /** Handle task bar clock position event.222 * 223 * @param clock Task bar clock221 /** Handle taskbar clock position event. 222 * 223 * @param clock Taskbar clock 224 224 * @param event Position event 225 225 * @return ui_claimed iff event was claimed … … 237 237 } 238 238 239 /** Get base control for task bar clock.240 * 241 * @param clock Task bar clock239 /** Get base control for taskbar clock. 240 * 241 * @param clock Taskbar clock 242 242 * @return Base UI control 243 243 */ … … 247 247 } 248 248 249 /** Set task bar clock rectangle.250 * 251 * @param clock Task bar clock249 /** Set taskbar clock rectangle. 250 * 251 * @param clock Taskbar clock 252 252 * @param rect Rectangle 253 253 */ … … 277 277 } 278 278 279 /** Paint task bar clock control.279 /** Paint taskbar clock control. 280 280 * 281 281 * @param arg Argument (taskbar_clock_t *) … … 289 289 } 290 290 291 /** Handle task bar clock control keyboard event.291 /** Handle taskbar clock control keyboard event. 292 292 * 293 293 * @param arg Argument (taskbar_clock_t *) … … 302 302 } 303 303 304 /** Handle task bar clock control position event.304 /** Handle taskbar clock control position event. 305 305 * 306 306 * @param arg Argument (taskbar_clock_t *) … … 322 322 { 323 323 taskbar_clock_t *clock = (taskbar_clock_t *) arg; 324 ui_t *ui; 325 326 ui = ui_window_get_ui(clock->window); 327 ui_lock(ui); 324 328 325 329 fibril_mutex_lock(&clock->lock); 326 (void) taskbar_clock_paint(clock); 330 if (!ui_is_suspended(ui_window_get_ui(clock->window))) 331 (void) taskbar_clock_paint(clock); 327 332 328 333 if (!clock->timer_cleanup) { … … 336 341 337 342 fibril_mutex_unlock(&clock->lock); 343 ui_unlock(ui); 338 344 } 339 345 -
uspace/app/taskbar/clock.h
r42c2e65 rdc5c303 31 31 */ 32 32 /** 33 * @file Task bar clock33 * @file Taskbar clock 34 34 */ 35 35 -
uspace/app/taskbar/doc/doxygroups.h
r42c2e65 rdc5c303 1 1 /** @addtogroup taskbar taskbar 2 * @brief Task bar2 * @brief Taskbar 3 3 * @ingroup apps 4 4 */ -
uspace/app/taskbar/main.c
r42c2e65 rdc5c303 30 30 * @{ 31 31 */ 32 /** @file Task Bar32 /** @file Taskbar 33 33 */ 34 34 -
uspace/app/taskbar/meson.build
r42c2e65 rdc5c303 1 1 # 2 # Copyright (c) 202 2Jiri Svoboda2 # Copyright (c) 2023 Jiri Svoboda 3 3 # All rights reserved. 4 4 # … … 27 27 # 28 28 29 deps = [ ' ui', 'wndmgt' ]29 deps = [ 'tbarcfg', 'ui', 'wndmgt' ] 30 30 src = files( 31 31 'clock.c', 32 32 'main.c', 33 33 'taskbar.c', 34 'tbsmenu.c', 34 35 'wndlist.c', 35 36 ) … … 38 39 'clock.c', 39 40 'taskbar.c', 41 'tbsmenu.c', 40 42 'wndlist.c', 41 43 'test/clock.c', 42 44 'test/main.c', 43 45 'test/taskbar.c', 46 'test/tbsmenu.c', 44 47 'test/wndlist.c', 45 48 ) 49 50 if install_nonessential_data 51 installed_data += { 'name': 'taskbar.sif', 'dir': '/cfg' } 52 endif -
uspace/app/taskbar/taskbar.c
r42c2e65 rdc5c303 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 30 30 * @{ 31 31 */ 32 /** @file Task Bar32 /** @file Taskbar 33 33 */ 34 34 … … 39 39 #include <str.h> 40 40 #include <ui/fixed.h> 41 #include <ui/label.h>42 41 #include <ui/resource.h> 43 42 #include <ui/ui.h> … … 46 45 #include "clock.h" 47 46 #include "taskbar.h" 47 #include "tbsmenu.h" 48 48 #include "wndlist.h" 49 49 50 50 static void taskbar_wnd_close(ui_window_t *, void *); 51 static void taskbar_wnd_kbd(ui_window_t *, void *, kbd_event_t *); 51 52 static void taskbar_wnd_pos(ui_window_t *, void *, pos_event_t *); 52 53 53 54 static ui_window_cb_t window_cb = { 54 55 .close = taskbar_wnd_close, 56 .kbd = taskbar_wnd_kbd, 55 57 .pos = taskbar_wnd_pos 56 58 }; … … 66 68 67 69 ui_quit(taskbar->ui); 70 } 71 72 /** Window received keyboard event. 73 * 74 * @param window Window 75 * @param arg Argument (taskbar) 76 * @param event Keyboard event 77 */ 78 static void taskbar_wnd_kbd(ui_window_t *window, void *arg, kbd_event_t *event) 79 { 80 taskbar_t *taskbar = (taskbar_t *) arg; 81 ui_evclaim_t claim; 82 83 /* Remember ID of device that sent the last event */ 84 taskbar->wndlist->ev_idev_id = event->kbd_id; 85 taskbar->tbsmenu->ev_idev_id = event->kbd_id; 86 87 claim = ui_window_def_kbd(window, event); 88 if (claim == ui_claimed) 89 return; 90 91 if (event->type == KEY_PRESS && (event->mods & KM_CTRL) == 0 && 92 (event->mods & KM_ALT) == 0 && (event->mods & KM_SHIFT) == 0 && 93 event->key == KC_ENTER) { 94 if (!tbsmenu_is_open(taskbar->tbsmenu)) 95 tbsmenu_open(taskbar->tbsmenu); 96 } 68 97 } 69 98 … … 79 108 80 109 /* Remember ID of device that sent the last event */ 81 taskbar->wndlist->ev_pos_id = event->pos_id; 110 taskbar->wndlist->ev_idev_id = event->pos_id; 111 taskbar->tbsmenu->ev_idev_id = event->pos_id; 82 112 83 113 ui_window_def_pos(window, event); 84 114 } 85 115 86 /** Create task bar.116 /** Create taskbar. 87 117 * 88 118 * @param display_spec Display specification 89 119 * @param wndmgt_svc Window management service (or WNDMGT_DEFAULT) 90 * @param rtaskbar Place to store pointer to new task bar120 * @param rtaskbar Place to store pointer to new taskbar 91 121 * @return @c EOK on success or an error coe 92 122 */ … … 98 128 gfx_rect_t scr_rect; 99 129 gfx_rect_t rect; 100 ui_resource_t *ui_res;101 130 errno_t rc; 102 131 … … 128 157 129 158 ui_wnd_params_init(¶ms); 130 params.caption = "Task Bar";159 params.caption = "Taskbar"; 131 160 params.placement = ui_wnd_place_bottom_left; 132 161 … … 160 189 } 161 190 162 ui_window_set_cb(taskbar->window, &window_cb, (void *)taskbar);163 ui_res = ui_window_get_res(taskbar->window);164 165 191 rc = ui_fixed_create(&taskbar->fixed); 166 192 if (rc != EOK) { … … 169 195 } 170 196 171 rc = ui_label_create(ui_res, "HelenOS", &taskbar->label); 172 if (rc != EOK) { 173 printf("Error creating label.\n"); 174 goto error; 175 } 176 177 ui_window_get_app_rect(taskbar->window, &rect); 197 rc = tbsmenu_create(taskbar->window, taskbar->fixed, &taskbar->tbsmenu); 198 if (rc != EOK) { 199 printf("Error creating start menu.\n"); 200 goto error; 201 } 202 203 rc = tbsmenu_load(taskbar->tbsmenu, "/cfg/taskbar.sif"); 204 if (rc != EOK) { 205 printf("Error loading start menu from '%s'.\n", 206 "/cfg/taskbar.sif"); 207 } 208 178 209 if (ui_is_textmode(taskbar->ui)) { 179 rect.p0.x += 1; 210 rect.p0.x = params.rect.p0.x + 1; 211 rect.p0.y = 0; 212 rect.p1.x = params.rect.p0.x + 9; 213 rect.p1.y = 1; 180 214 } else { 181 rect.p0.x += 10; 182 } 183 ui_label_set_rect(taskbar->label, &rect); 184 ui_label_set_halign(taskbar->label, gfx_halign_left); 185 ui_label_set_valign(taskbar->label, gfx_valign_center); 186 187 rc = ui_fixed_add(taskbar->fixed, ui_label_ctl(taskbar->label)); 188 if (rc != EOK) { 189 printf("Error adding control to layout.\n"); 190 ui_label_destroy(taskbar->label); 191 goto error; 192 } 215 rect.p0.x = params.rect.p0.x + 5; 216 rect.p0.y = 4; 217 rect.p1.x = params.rect.p0.x + 84; 218 rect.p1.y = 32 - 4; 219 } 220 221 tbsmenu_set_rect(taskbar->tbsmenu, &rect); 193 222 194 223 rc = wndlist_create(taskbar->window, taskbar->fixed, &taskbar->wndlist); … … 199 228 200 229 if (ui_is_textmode(taskbar->ui)) { 201 rect.p0.x = params.rect.p0.x + 9;230 rect.p0.x = params.rect.p0.x + 10; 202 231 rect.p0.y = 0; 203 232 rect.p1.x = params.rect.p1.x - 10; … … 211 240 wndlist_set_rect(taskbar->wndlist, &rect); 212 241 242 /* 243 * We may not be able to open WM service if display server is not 244 * running. That's okay, there simply are no windows to manage. 245 */ 213 246 rc = wndlist_open_wm(taskbar->wndlist, wndmgt_svc); 214 if (rc != EOK ) {247 if (rc != EOK && rc != ENOENT) { 215 248 printf("Error attaching window management service.\n"); 216 249 goto error; … … 243 276 244 277 ui_window_add(taskbar->window, ui_fixed_ctl(taskbar->fixed)); 278 ui_window_set_cb(taskbar->window, &window_cb, (void *)taskbar); 245 279 246 280 rc = ui_window_paint(taskbar->window); … … 257 291 if (taskbar->wndlist != NULL) 258 292 wndlist_destroy(taskbar->wndlist); 293 if (taskbar->tbsmenu != NULL) 294 tbsmenu_destroy(taskbar->tbsmenu); 259 295 if (taskbar->window != NULL) 260 296 ui_window_destroy(taskbar->window); … … 265 301 } 266 302 267 /** Destroy task bar. */303 /** Destroy taskbar. */ 268 304 void taskbar_destroy(taskbar_t *taskbar) 269 305 { 270 306 ui_fixed_remove(taskbar->fixed, taskbar_clock_ctl(taskbar->clock)); 271 307 taskbar_clock_destroy(taskbar->clock); 308 wndlist_destroy(taskbar->wndlist); 309 tbsmenu_destroy(taskbar->tbsmenu); 272 310 ui_window_destroy(taskbar->window); 273 311 ui_destroy(taskbar->ui); -
uspace/app/taskbar/taskbar.h
r42c2e65 rdc5c303 31 31 */ 32 32 /** 33 * @file Task Bar33 * @file Taskbar 34 34 */ 35 35 -
uspace/app/taskbar/test/main.c
r42c2e65 rdc5c303 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 33 33 PCUT_IMPORT(clock); 34 34 PCUT_IMPORT(taskbar); 35 PCUT_IMPORT(tbsmenu); 35 36 PCUT_IMPORT(wndlist); 36 37 -
uspace/app/taskbar/test/wndlist.c
r42c2e65 rdc5c303 139 139 ui_fixed_t *fixed = NULL; 140 140 wndlist_t *wndlist; 141 loc_srv_t *srv; 141 142 142 143 /* Set up a test WM service */ … … 145 146 146 147 // FIXME This causes this test to be non-reentrant! 147 rc = loc_server_register(test_wndmgt_server );148 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 149 150 rc = loc_service_register( test_wndmgt_svc, &sid);148 rc = loc_server_register(test_wndmgt_server, &srv); 149 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 150 151 rc = loc_service_register(srv, test_wndmgt_svc, &sid); 151 152 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 152 153 … … 177 178 ui_destroy(ui); 178 179 179 rc = loc_service_unregister(sid); 180 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 180 rc = loc_service_unregister(srv, sid); 181 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 182 loc_server_unregister(srv); 181 183 } 182 184 -
uspace/app/taskbar/types/clock.h
r42c2e65 rdc5c303 31 31 */ 32 32 /** 33 * @file Task bar clock33 * @file Taskbar clock 34 34 */ 35 35 … … 41 41 #include <ui/window.h> 42 42 43 /** Task bar clock43 /** Taskbar clock 44 44 * 45 45 * This is a custom UI control. -
uspace/app/taskbar/types/taskbar.h
r42c2e65 rdc5c303 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 31 31 */ 32 32 /** 33 * @file Task Bar types33 * @file Taskbar types 34 34 */ 35 35 … … 43 43 #include <ui/window.h> 44 44 #include "clock.h" 45 #include "tbsmenu.h" 45 46 #include "wndlist.h" 46 47 47 /** Task bar */48 /** Taskbar */ 48 49 typedef struct taskbar { 49 50 /** User interface */ … … 53 54 /** Fixed layout */ 54 55 ui_fixed_t *fixed; 55 ui_label_t *label; 56 /** Start menu */ 57 tbsmenu_t *tbsmenu; 56 58 /** Window list */ 57 59 wndlist_t *wndlist; -
uspace/app/taskbar/types/wndlist.h
r42c2e65 rdc5c303 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 31 31 */ 32 32 /** 33 * @file Task bar window list33 * @file Taskbar window list 34 34 */ 35 35 … … 61 61 } wndlist_entry_t; 62 62 63 /** Task bar window list */63 /** Taskbar window list */ 64 64 typedef struct wndlist { 65 65 /** Base control object */ … … 69 69 ui_window_t *window; 70 70 71 /** Layout to which we add window butto ons */71 /** Layout to which we add window buttons */ 72 72 ui_fixed_t *fixed; 73 73 … … 84 84 wndmgt_t *wndmgt; 85 85 86 /** Position ID of last positionevent */87 sysarg_t ev_ pos_id;86 /** Device ID of last input event */ 87 sysarg_t ev_idev_id; 88 88 } wndlist_t; 89 89 -
uspace/app/taskbar/wndlist.c
r42c2e65 rdc5c303 30 30 * @{ 31 31 */ 32 /** @file Task bar window list32 /** @file Taskbar window list 33 33 */ 34 34 … … 45 45 #include <ui/ui.h> 46 46 #include <ui/window.h> 47 #include "clock.h"48 47 #include "wndlist.h" 49 48 … … 81 80 }; 82 81 83 /** Create task bar window list.82 /** Create taskbar window list. 84 83 * 85 84 * @param window Containing window 86 85 * @param fixed Fixed layout to which buttons will be added 87 * @param wndmgt Window management service88 86 * @param rwndlist Place to store pointer to new window list 89 87 * @return @c EOK on success or an error code … … 178 176 } 179 177 180 /** Destroy task bar window list. */ 178 /** Destroy taskbar window list. 179 * 180 * @param wndlist Window list 181 */ 181 182 void wndlist_destroy(wndlist_t *wndlist) 182 183 { … … 253 254 wndlist_set_entry_rect(wndlist, entry); 254 255 if (paint) 255 return ui_pbutton_paint(entry->button);256 return wndlist_paint_entry(entry); 256 257 } 257 258 … … 319 320 wndlist_set_entry_rect(wndlist, e); 320 321 if (paint) { 321 rc = ui_pbutton_paint(e->button);322 rc = wndlist_paint_entry(e); 322 323 if (rc != EOK) 323 324 return rc; … … 401 402 ui_pbutton_set_light(entry->button, active); 402 403 403 rc = ui_pbutton_paint(entry->button);404 rc = wndlist_paint_entry(entry); 404 405 if (rc != EOK) 405 406 return rc; 406 407 407 return wndlist_repaint(wndlist);408 return EOK; 408 409 } 409 410 … … 469 470 } 470 471 471 /** Compute and set window list entry rectangle. 472 * 473 * Compute rectangle for window list entry and set it. 472 /** Paint window list entry. 474 473 * 475 474 * @param entry Window list entry 476 475 * @return EOK on success or an error code 477 476 */ 477 errno_t wndlist_paint_entry(wndlist_entry_t *entry) 478 { 479 ui_t *ui; 480 481 ui = ui_window_get_ui(entry->wndlist->window); 482 if (ui_is_suspended(ui)) 483 return EOK; 484 485 return ui_pbutton_paint(entry->button); 486 } 487 488 /** Unpaint window list entry. 489 * 490 * @param entry Window list entry 491 * @return EOK on success or an error code 492 */ 478 493 errno_t wndlist_unpaint_entry(wndlist_entry_t *entry) 479 494 { 480 495 errno_t rc; 496 ui_t *ui; 481 497 gfx_context_t *gc; 482 498 ui_resource_t *res; 483 499 gfx_color_t *color; 484 500 501 ui = ui_window_get_ui(entry->wndlist->window); 485 502 gc = ui_window_get_gc(entry->wndlist->window); 486 503 res = ui_window_get_res(entry->wndlist->window); 487 504 color = ui_resource_get_wnd_face_color(res); 488 505 506 if (ui_is_suspended(ui)) 507 return EOK; 508 489 509 rc = gfx_set_color(gc, color); 490 510 if (rc != EOK) … … 511 531 wndlist_t *wndlist = (wndlist_t *)arg; 512 532 wndmgt_window_info_t *winfo = NULL; 533 ui_t *ui; 513 534 errno_t rc; 535 536 ui = ui_window_get_ui(wndlist->window); 537 ui_lock(ui); 514 538 515 539 rc = wndmgt_get_window_info(wndlist->wndmgt, wnd_id, &winfo); … … 527 551 528 552 wndmgt_free_window_info(winfo); 553 ui_unlock(ui); 529 554 return; 530 555 error: 531 556 if (winfo != NULL) 532 557 wndmgt_free_window_info(winfo); 558 ui_unlock(ui); 533 559 } 534 560 … … 542 568 wndlist_t *wndlist = (wndlist_t *)arg; 543 569 wndlist_entry_t *entry; 570 ui_t *ui; 571 572 ui = ui_window_get_ui(wndlist->window); 573 ui_lock(ui); 544 574 545 575 entry = wndlist_entry_by_id(wndlist, wnd_id); 546 if (entry == NULL) 576 if (entry == NULL) { 577 ui_unlock(ui); 547 578 return; 579 } 548 580 549 581 (void) wndlist_remove(wndlist, entry, true); 582 ui_unlock(ui); 550 583 } 551 584 … … 560 593 wndmgt_window_info_t *winfo = NULL; 561 594 wndlist_entry_t *entry; 595 ui_t *ui; 562 596 errno_t rc; 563 597 598 ui = ui_window_get_ui(wndlist->window); 599 ui_lock(ui); 600 564 601 entry = wndlist_entry_by_id(wndlist, wnd_id); 565 if (entry == NULL) 602 if (entry == NULL) { 603 ui_unlock(ui); 566 604 return; 605 } 567 606 568 607 rc = wndmgt_get_window_info(wndlist->wndmgt, wnd_id, &winfo); 569 if (rc != EOK) 608 if (rc != EOK) { 609 ui_unlock(ui); 570 610 return; 611 } 571 612 572 613 (void) wndlist_update(wndlist, entry, winfo->caption, 573 614 winfo->nfocus != 0); 574 615 wndmgt_free_window_info(winfo); 616 ui_unlock(ui); 575 617 } 576 618 … … 661 703 errno_t wndlist_repaint(wndlist_t *wndlist) 662 704 { 705 if (ui_is_suspended(ui_window_get_ui(wndlist->window))) 706 return EOK; 707 663 708 return ui_window_paint(wndlist->window); 664 709 } … … 675 720 676 721 /* ID of device that clicked the button */ 677 dev_id = entry->wndlist->ev_ pos_id;722 dev_id = entry->wndlist->ev_idev_id; 678 723 679 724 (void) wndmgt_activate_window(entry->wndlist->wndmgt, -
uspace/app/taskbar/wndlist.h
r42c2e65 rdc5c303 31 31 */ 32 32 /** 33 * @file Task bar window list33 * @file Taskbar window list 34 34 */ 35 35 … … 63 63 extern size_t wndlist_count(wndlist_t *); 64 64 extern errno_t wndlist_repaint(wndlist_t *); 65 extern errno_t wndlist_paint_entry(wndlist_entry_t *); 65 66 extern errno_t wndlist_unpaint_entry(wndlist_entry_t *); 66 67 -
uspace/app/terminal/terminal.c
r42c2e65 rdc5c303 1022 1022 term->srvs.sarg = term; 1023 1023 1024 rc = loc_server_register(NAME );1024 rc = loc_server_register(NAME, &term->srv); 1025 1025 if (rc != EOK) { 1026 1026 printf("Error registering server.\n"); … … 1033 1033 task_get_id()); 1034 1034 1035 rc = loc_service_register( vc, &term->dsid);1035 rc = loc_service_register(term->srv, vc, &term->dsid); 1036 1036 if (rc != EOK) { 1037 1037 printf("Error registering service.\n"); … … 1063 1063 return EOK; 1064 1064 error: 1065 if (term->dsid != 0) 1066 loc_service_unregister(term->srv, term->dsid); 1067 if (term->srv != NULL) 1068 loc_server_unregister(term->srv); 1065 1069 if (term->window != NULL) 1066 1070 ui_window_destroy(term->window); -
uspace/app/terminal/terminal.h
r42c2e65 rdc5c303 1 1 /* 2 * Copyright (c) 202 1Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * Copyright (c) 2012 Petr Koupy 4 4 * All rights reserved. … … 91 91 charfield_t *ubuf; 92 92 93 loc_srv_t *srv; 93 94 service_id_t dsid; 94 95 con_srvs_t srvs; -
uspace/app/tester/fault/fault1.c
r42c2e65 rdc5c303 30 30 #include "../tester.h" 31 31 32 #pragma GCC diagnostic ignored "-Warray-bounds" 33 32 34 const char *test_fault1(void) 33 35 { -
uspace/app/tester/meson.build
r42c2e65 rdc5c303 1 1 # 2 # Copyright (c) 202 1Jiri Svoboda2 # Copyright (c) 2023 Jiri Svoboda 3 3 # Copyright (c) 2005 Martin Decky 4 4 # Copyright (c) 2007 Jakub Jermar … … 29 29 # 30 30 31 deps = [ 'block', 'codepage', 'drv', 'math' ]31 deps = [ 'block', 'codepage', 'drv', 'math', 'ipctest', 'console' ] 32 32 src = files( 33 33 'tester.c', … … 52 52 'float/float2.c', 53 53 'vfs/vfs1.c', 54 'ipc/readwrite.c', 54 55 'ipc/sharein.c', 55 56 'ipc/starve.c', -
uspace/app/tester/mm/common.c
r42c2e65 rdc5c303 35 35 #include <stdlib.h> 36 36 #include <errno.h> 37 #include <malloc.h> 37 38 #include "../tester.h" 38 39 #include "common.h" -
uspace/app/tester/print/print5.c
r42c2e65 rdc5c303 38 38 */ 39 39 #pragma GCC diagnostic ignored "-Wformat" 40 #pragma GCC diagnostic ignored "-Wformat-overflow" 40 41 41 42 #include <stdio.h> -
uspace/app/tester/tester.c
r42c2e65 rdc5c303 68 68 #include "float/float2.def" 69 69 #include "vfs/vfs1.def" 70 #include "ipc/readwrite.def" 70 71 #include "ipc/sharein.def" 71 72 #include "ipc/starve.def" -
uspace/app/tester/tester.h
r42c2e65 rdc5c303 99 99 extern const char *test_vfs1(void); 100 100 extern const char *test_ping_pong(void); 101 extern const char *test_readwrite(void); 101 102 extern const char *test_sharein(void); 102 103 extern const char *test_starve_ipc(void); -
uspace/app/tetris/meson.build
r42c2e65 rdc5c303 28 28 # 29 29 30 deps = [ 'console' ] 30 31 src = files( 31 32 'shapes.c', -
uspace/app/top/meson.build
r42c2e65 rdc5c303 28 28 # 29 29 30 deps = [ 'console' ] 30 31 src = files( 31 32 'top.c', -
uspace/app/trace/meson.build
r42c2e65 rdc5c303 28 28 # 29 29 30 deps = [ 'console' ] 30 31 src = files( 31 32 'trace.c', -
uspace/app/uidemo/uidemo.c
r42c2e65 rdc5c303 45 45 #include <ui/label.h> 46 46 #include <ui/list.h> 47 #include <ui/menu.h> 47 48 #include <ui/menubar.h> 49 #include <ui/menudd.h> 48 50 #include <ui/menuentry.h> 49 #include <ui/menu.h>50 51 #include <ui/msgdialog.h> 51 52 #include <ui/pbutton.h> 52 53 #include <ui/promptdialog.h> 53 54 #include <ui/resource.h> 55 #include <ui/selectdialog.h> 54 56 #include <ui/tab.h> 55 57 #include <ui/tabset.h> … … 108 110 static void uidemo_file_exit(ui_menu_entry_t *, void *); 109 111 static void uidemo_edit_modify(ui_menu_entry_t *, void *); 112 static void uidemo_edit_insert_character(ui_menu_entry_t *, void *); 110 113 111 114 static void file_dialog_bok(ui_file_dialog_t *, void *, const char *); … … 127 130 .bcancel = prompt_dialog_bcancel, 128 131 .close = prompt_dialog_close 132 }; 133 134 static void select_dialog_bok(ui_select_dialog_t *, void *, void *); 135 static void select_dialog_bcancel(ui_select_dialog_t *, void *); 136 static void select_dialog_close(ui_select_dialog_t *, void *); 137 138 static ui_select_dialog_cb_t select_dialog_cb = { 139 .bok = select_dialog_bok, 140 .bcancel = select_dialog_bcancel, 141 .close = select_dialog_close 129 142 }; 130 143 … … 275 288 pos = ui_scrollbar_get_pos(scrollbar); 276 289 ui_scrollbar_set_pos(scrollbar, pos - 277 ui_scrollbar_t hrough_length(scrollbar) / 4);290 ui_scrollbar_trough_length(scrollbar) / 4); 278 291 279 292 pos = ui_scrollbar_get_pos(scrollbar); … … 292 305 pos = ui_scrollbar_get_pos(scrollbar); 293 306 ui_scrollbar_set_pos(scrollbar, pos + 294 ui_scrollbar_t hrough_length(scrollbar) / 4);307 ui_scrollbar_trough_length(scrollbar) / 4); 295 308 296 309 pos = ui_scrollbar_get_pos(scrollbar); … … 432 445 rc = ui_prompt_dialog_create(demo->ui, &pdparams, &dialog); 433 446 if (rc != EOK) { 434 printf("Error creating messagedialog.\n");447 printf("Error creating prompt dialog.\n"); 435 448 return; 436 449 } 437 450 438 451 ui_prompt_dialog_set_cb(dialog, &prompt_dialog_cb, demo); 452 } 453 454 /** Edit / Insert Character menu entry selected. 455 * 456 * @param mentry Menu entry 457 * @param arg Argument (demo) 458 */ 459 static void uidemo_edit_insert_character(ui_menu_entry_t *mentry, void *arg) 460 { 461 ui_demo_t *demo = (ui_demo_t *) arg; 462 ui_select_dialog_params_t sdparams; 463 ui_select_dialog_t *dialog; 464 ui_list_entry_attr_t attr; 465 errno_t rc; 466 467 ui_select_dialog_params_init(&sdparams); 468 sdparams.caption = "Insert Character"; 469 sdparams.prompt = "Select character to insert"; 470 471 rc = ui_select_dialog_create(demo->ui, &sdparams, &dialog); 472 if (rc != EOK) { 473 printf("Error creating select dialog.\n"); 474 return; 475 } 476 477 ui_list_entry_attr_init(&attr); 478 attr.caption = "Dollar sign ($)"; 479 attr.arg = (void *)'$'; 480 rc = ui_select_dialog_append(dialog, &attr); 481 if (rc != EOK) { 482 printf("Error appending entry to list.\n"); 483 return; 484 } 485 486 ui_list_entry_attr_init(&attr); 487 attr.caption = "Hash sign (#)"; 488 attr.arg = (void *)'#'; 489 rc = ui_select_dialog_append(dialog, &attr); 490 if (rc != EOK) { 491 printf("Error appending entry to list.\n"); 492 return; 493 } 494 495 ui_list_entry_attr_init(&attr); 496 attr.caption = "Question mark (?)"; 497 attr.arg = (void *)'?'; 498 rc = ui_select_dialog_append(dialog, &attr); 499 if (rc != EOK) { 500 printf("Error appending entry to list.\n"); 501 return; 502 } 503 504 ui_select_dialog_set_cb(dialog, &select_dialog_cb, demo); 505 506 (void) ui_select_dialog_paint(dialog); 439 507 } 440 508 … … 525 593 /** Prompt dialog cancel button press. 526 594 * 527 * @param dialog Filedialog595 * @param dialog Prompt dialog 528 596 * @param arg Argument (ui_demo_t *) 529 597 */ … … 538 606 /** Prompt dialog close request. 539 607 * 540 * @param dialog Filedialog608 * @param dialog Prompt dialog 541 609 * @param arg Argument (ui_demo_t *) 542 610 */ … … 547 615 (void) demo; 548 616 ui_prompt_dialog_destroy(dialog); 617 } 618 619 /** Select dialog OK button press. 620 * 621 * @param dialog Select dialog 622 * @param arg Argument (ui_demo_t *) 623 * @param text Submitted text 624 */ 625 static void select_dialog_bok(ui_select_dialog_t *dialog, void *arg, 626 void *earg) 627 { 628 ui_demo_t *demo = (ui_demo_t *) arg; 629 char str[2]; 630 631 ui_select_dialog_destroy(dialog); 632 str[0] = (char)(intptr_t)earg; 633 str[1] = '\0'; 634 (void) ui_entry_insert_str(demo->entry, str); 635 } 636 637 /** Select dialog cancel button press. 638 * 639 * @param dialog Select dialog 640 * @param arg Argument (ui_demo_t *) 641 */ 642 static void select_dialog_bcancel(ui_select_dialog_t *dialog, void *arg) 643 { 644 ui_demo_t *demo = (ui_demo_t *) arg; 645 646 (void) demo; 647 ui_select_dialog_destroy(dialog); 648 } 649 650 /** Select dialog close request. 651 * 652 * @param dialog Select dialog 653 * @param arg Argument (ui_demo_t *) 654 */ 655 static void select_dialog_close(ui_select_dialog_t *dialog, void *arg) 656 { 657 ui_demo_t *demo = (ui_demo_t *) arg; 658 659 (void) demo; 660 ui_select_dialog_destroy(dialog); 549 661 } 550 662 … … 598 710 ui_menu_entry_t *mexit; 599 711 ui_menu_entry_t *mmodify; 712 ui_menu_entry_t *minsert_char; 600 713 ui_menu_entry_t *mabout; 601 714 ui_list_entry_attr_t eattr; … … 652 765 } 653 766 654 rc = ui_menu_ create(demo.mbar, "~F~ile", &demo.mfile);767 rc = ui_menu_dd_create(demo.mbar, "~F~ile", NULL, &demo.mfile); 655 768 if (rc != EOK) { 656 769 printf("Error creating menu.\n"); … … 692 805 } 693 806 807 ui_menu_entry_set_disabled(mfoobar, true); 808 694 809 rc = ui_menu_entry_sep_create(demo.mfile, &msep); 695 810 if (rc != EOK) { … … 706 821 ui_menu_entry_set_cb(mexit, uidemo_file_exit, (void *) &demo); 707 822 708 rc = ui_menu_ create(demo.mbar, "~E~dit", &demo.medit);823 rc = ui_menu_dd_create(demo.mbar, "~E~dit", NULL, &demo.medit); 709 824 if (rc != EOK) { 710 825 printf("Error creating menu.\n"); … … 720 835 ui_menu_entry_set_cb(mmodify, uidemo_edit_modify, (void *) &demo); 721 836 722 rc = ui_menu_create(demo.mbar, "~P~references", &demo.mpreferences); 837 rc = ui_menu_entry_create(demo.medit, "~I~nsert Character", 838 "", &minsert_char); 723 839 if (rc != EOK) { 724 840 printf("Error creating menu.\n"); … … 726 842 } 727 843 728 rc = ui_menu_create(demo.mbar, "~H~elp", &demo.mhelp); 844 ui_menu_entry_set_cb(minsert_char, uidemo_edit_insert_character, 845 (void *) &demo); 846 847 rc = ui_menu_dd_create(demo.mbar, "~P~references", NULL, 848 &demo.mpreferences); 849 if (rc != EOK) { 850 printf("Error creating menu.\n"); 851 return rc; 852 } 853 854 rc = ui_menu_dd_create(demo.mbar, "~H~elp", NULL, &demo.mhelp); 729 855 if (rc != EOK) { 730 856 printf("Error creating menu.\n"); … … 1144 1270 1145 1271 ui_scrollbar_set_thumb_length(demo.hscrollbar, 1146 ui_scrollbar_t hrough_length(demo.hscrollbar) / 4);1272 ui_scrollbar_trough_length(demo.hscrollbar) / 4); 1147 1273 1148 1274 rc = ui_fixed_add(demo.bfixed, ui_scrollbar_ctl(demo.hscrollbar)); … … 1176 1302 1177 1303 ui_scrollbar_set_thumb_length(demo.vscrollbar, 1178 ui_scrollbar_t hrough_length(demo.vscrollbar) / 4);1304 ui_scrollbar_trough_length(demo.vscrollbar) / 4); 1179 1305 1180 1306 rc = ui_fixed_add(demo.bfixed, ui_scrollbar_ctl(demo.vscrollbar)); -
uspace/app/wifi_supplicant/wifi_supplicant.c
r42c2e65 rdc5c303 75 75 } 76 76 77 static char *nic_addr_format(nic_address_t *addr) 78 { 79 char *str; 80 int rc = asprintf(&str, "%02x:%02x:%02x:%02x:%02x:%02x", 77 static void nic_addr_format(nic_address_t *addr, char *out, size_t out_size) 78 { 79 snprintf(out, out_size, "%02x:%02x:%02x:%02x:%02x:%02x", 81 80 addr->address[0], addr->address[1], addr->address[2], 82 81 addr->address[3], addr->address[4], addr->address[5]); 83 84 if (rc < 0)85 return NULL;86 87 return str;88 82 } 89 83 … … 263 257 for (uint8_t i = 0; i < scan_results.length; i++) { 264 258 ieee80211_scan_result_t result = scan_results.results[i]; 259 char mac_addr_hex[18]; 260 nic_addr_format(&result.bssid, mac_addr_hex, 18); 265 261 266 262 printf("%16.16s %17s %4d %5s %5s %7s %7s\n", 267 result.ssid, nic_addr_format(&result.bssid),263 result.ssid, mac_addr_hex, 268 264 result.channel, 269 265 enum_name(ieee80211_security_type_strs, result.security.type),
Note:
See TracChangeset
for help on using the changeset viewer.
