Changeset 9e84d2c in mainline for uspace/srv/hid/display/test/client.c


Ignore:
Timestamp:
2021-06-10T13:22:33Z (3 years ago)
Author:
jxsvoboda <5887334+jxsvoboda@…>
Branches:
master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5823aef3
Parents:
c9927c66
git-author:
Jiri Svoboda <jiri@…> (2021-06-02 17:00:03)
git-committer:
jxsvoboda <5887334+jxsvoboda@…> (2021-06-10 13:22:33)
Message:

Popup windows event delivery is special

Popup windows don't get focus, yet they still receive events.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/display/test/client.c

    rc9927c66 r9e84d2c  
    11/*
    2  * Copyright (c) 2019 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3434#include "../client.h"
    3535#include "../display.h"
     36#include "../seat.h"
    3637#include "../window.h"
    3738
     
    7879        ds_display_t *disp;
    7980        ds_client_t *client;
     81        ds_seat_t *seat;
    8082        ds_window_t *w0;
    8183        ds_window_t *w1;
    8284        ds_window_t *wnd;
    8385        display_wnd_params_t params;
    84         errno_t rc;
    85 
    86         rc = ds_display_create(NULL, df_none, &disp);
    87         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    88 
    89         rc = ds_client_create(disp, &test_ds_client_cb, NULL, &client);
     86        bool called_cb = NULL;
     87        errno_t rc;
     88
     89        rc = ds_display_create(NULL, df_none, &disp);
     90        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     91
     92        rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client);
     93        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     94
     95        rc = ds_seat_create(disp, &seat);
    9096        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    9197
     
    114120        ds_window_destroy(w0);
    115121        ds_window_destroy(w1);
     122        ds_seat_destroy(seat);
    116123        ds_client_destroy(client);
    117124        ds_display_destroy(disp);
     
    123130        ds_display_t *disp;
    124131        ds_client_t *client;
     132        ds_seat_t *seat;
    125133        ds_window_t *w0;
    126134        ds_window_t *w1;
    127135        ds_window_t *wnd;
    128136        display_wnd_params_t params;
    129         errno_t rc;
    130 
    131         rc = ds_display_create(NULL, df_none, &disp);
    132         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    133 
    134         rc = ds_client_create(disp, &test_ds_client_cb, NULL, &client);
     137        bool called_cb = NULL;
     138        errno_t rc;
     139
     140        rc = ds_display_create(NULL, df_none, &disp);
     141        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     142
     143        rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client);
     144        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     145
     146        rc = ds_seat_create(disp, &seat);
    135147        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    136148
     
    156168        ds_window_destroy(w0);
    157169        ds_window_destroy(w1);
     170        ds_seat_destroy(seat);
    158171        ds_client_destroy(client);
    159172        ds_display_destroy(disp);
     
    165178        ds_display_t *disp;
    166179        ds_client_t *client;
     180        ds_seat_t *seat;
    167181        ds_window_t *wnd;
    168182        display_wnd_params_t params;
     
    178192        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    179193
    180         display_wnd_params_init(&params);
    181         params.rect.p0.x = params.rect.p0.y = 0;
    182         params.rect.p1.x = params.rect.p1.y = 1;
    183 
    184         rc = ds_window_create(client, &params, &wnd);
    185         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    186 
    187         PCUT_ASSERT_FALSE(called_cb);
     194        rc = ds_seat_create(disp, &seat);
     195        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     196
     197        display_wnd_params_init(&params);
     198        params.rect.p0.x = params.rect.p0.y = 0;
     199        params.rect.p1.x = params.rect.p1.y = 1;
     200
     201        rc = ds_window_create(client, &params, &wnd);
     202        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     203
     204        /* New window gets focused event */
     205        PCUT_ASSERT_TRUE(called_cb);
     206
     207        rc = ds_client_get_event(client, &rwindow, &revent);
     208        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     209
     210        called_cb = false;
    188211
    189212        rc = ds_client_get_event(client, &rwindow, &revent);
     
    203226
    204227        ds_window_destroy(wnd);
     228        ds_seat_destroy(seat);
    205229        ds_client_destroy(client);
    206230        ds_display_destroy(disp);
     
    212236        ds_display_t *disp;
    213237        ds_client_t *client;
     238        ds_seat_t *seat;
    214239        ds_window_t *wnd;
    215240        display_wnd_params_t params;
     
    225250        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    226251
    227         display_wnd_params_init(&params);
    228         params.rect.p0.x = params.rect.p0.y = 0;
    229         params.rect.p1.x = params.rect.p1.y = 1;
    230 
    231         rc = ds_window_create(client, &params, &wnd);
    232         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    233 
    234         PCUT_ASSERT_FALSE(called_cb);
     252        rc = ds_seat_create(disp, &seat);
     253        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     254
     255        display_wnd_params_init(&params);
     256        params.rect.p0.x = params.rect.p0.y = 0;
     257        params.rect.p1.x = params.rect.p1.y = 1;
     258
     259        rc = ds_window_create(client, &params, &wnd);
     260        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     261
     262        /* New window gets focused event */
     263        PCUT_ASSERT_TRUE(called_cb);
     264
     265        rc = ds_client_get_event(client, &rwindow, &revent);
     266        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     267
     268        called_cb = false;
    235269
    236270        rc = ds_client_get_event(client, &rwindow, &revent);
     
    250284
    251285        ds_window_destroy(wnd);
     286        ds_seat_destroy(seat);
    252287        ds_client_destroy(client);
    253288        ds_display_destroy(disp);
     
    259294        ds_display_t *disp;
    260295        ds_client_t *client;
     296        ds_seat_t *seat;
    261297        ds_window_t *wnd;
    262298        display_wnd_params_t params;
     
    273309        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    274310
    275         display_wnd_params_init(&params);
    276         params.rect.p0.x = params.rect.p0.y = 0;
    277         params.rect.p1.x = params.rect.p1.y = 1;
    278 
    279         rc = ds_window_create(client, &params, &wnd);
    280         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     311        rc = ds_seat_create(disp, &seat);
     312        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     313
     314        display_wnd_params_init(&params);
     315        params.rect.p0.x = params.rect.p0.y = 0;
     316        params.rect.p1.x = params.rect.p1.y = 1;
     317
     318        rc = ds_window_create(client, &params, &wnd);
     319        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     320
     321        /* New window gets focused event */
     322        PCUT_ASSERT_TRUE(called_cb);
     323
     324        rc = ds_client_get_event(client, &rwindow, &revent);
     325        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     326
     327        called_cb = false;
     328
     329        rc = ds_client_get_event(client, &rwindow, &revent);
     330        PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    281331
    282332        event.type = KEY_PRESS;
     
    284334        event.mods = 0;
    285335        event.c = L'\0';
    286 
    287         PCUT_ASSERT_FALSE(called_cb);
    288 
    289         rc = ds_client_get_event(client, &rwindow, &revent);
    290         PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    291336
    292337        rc = ds_client_post_kbd_event(client, wnd, &event);
     
    307352
    308353        ds_window_destroy(wnd);
     354        ds_seat_destroy(seat);
    309355        ds_client_destroy(client);
    310356        ds_display_destroy(disp);
     
    316362        ds_display_t *disp;
    317363        ds_client_t *client;
     364        ds_seat_t *seat;
    318365        ds_window_t *wnd;
    319366        display_wnd_params_t params;
     
    330377        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    331378
    332         display_wnd_params_init(&params);
    333         params.rect.p0.x = params.rect.p0.y = 0;
    334         params.rect.p1.x = params.rect.p1.y = 1;
    335 
    336         rc = ds_window_create(client, &params, &wnd);
    337         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     379        rc = ds_seat_create(disp, &seat);
     380        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     381
     382        display_wnd_params_init(&params);
     383        params.rect.p0.x = params.rect.p0.y = 0;
     384        params.rect.p1.x = params.rect.p1.y = 1;
     385
     386        rc = ds_window_create(client, &params, &wnd);
     387        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     388
     389        /* New window gets focused event */
     390        PCUT_ASSERT_TRUE(called_cb);
     391
     392        rc = ds_client_get_event(client, &rwindow, &revent);
     393        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     394
     395        called_cb = false;
     396
     397        PCUT_ASSERT_FALSE(called_cb);
     398
     399        rc = ds_client_get_event(client, &rwindow, &revent);
     400        PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    338401
    339402        event.type = POS_PRESS;
    340403        event.hpos = 1;
    341404        event.vpos = 2;
    342 
    343         PCUT_ASSERT_FALSE(called_cb);
    344 
    345         rc = ds_client_get_event(client, &rwindow, &revent);
    346         PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    347405
    348406        rc = ds_client_post_pos_event(client, wnd, &event);
     
    362420
    363421        ds_window_destroy(wnd);
     422        ds_seat_destroy(seat);
    364423        ds_client_destroy(client);
    365424        ds_display_destroy(disp);
     
    371430        ds_display_t *disp;
    372431        ds_client_t *client;
     432        ds_seat_t *seat;
    373433        ds_window_t *wnd;
    374434        display_wnd_params_t params;
     
    385445        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    386446
    387         display_wnd_params_init(&params);
    388         params.rect.p0.x = params.rect.p0.y = 0;
    389         params.rect.p1.x = params.rect.p1.y = 1;
    390 
    391         rc = ds_window_create(client, &params, &wnd);
    392         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     447        rc = ds_seat_create(disp, &seat);
     448        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     449
     450        display_wnd_params_init(&params);
     451        params.rect.p0.x = params.rect.p0.y = 0;
     452        params.rect.p1.x = params.rect.p1.y = 1;
     453
     454        rc = ds_window_create(client, &params, &wnd);
     455        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     456
     457        /* New window gets focused event */
     458        PCUT_ASSERT_TRUE(called_cb);
     459
     460        rc = ds_client_get_event(client, &rwindow, &revent);
     461        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     462
     463        called_cb = false;
     464
     465        PCUT_ASSERT_FALSE(called_cb);
     466
     467        rc = ds_client_get_event(client, &rwindow, &revent);
     468        PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    393469
    394470        rect.p0.x = 1;
     
    396472        rect.p1.x = 3;
    397473        rect.p1.y = 4;
    398 
    399         PCUT_ASSERT_FALSE(called_cb);
    400 
    401         rc = ds_client_get_event(client, &rwindow, &revent);
    402         PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    403474
    404475        rc = ds_client_post_resize_event(client, wnd, &rect);
     
    419490
    420491        ds_window_destroy(wnd);
     492        ds_seat_destroy(seat);
    421493        ds_client_destroy(client);
    422494        ds_display_destroy(disp);
     
    428500        ds_display_t *disp;
    429501        ds_client_t *client;
     502        ds_seat_t *seat;
    430503        ds_window_t *wnd;
    431504        display_wnd_params_t params;
     
    441514        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    442515
    443         display_wnd_params_init(&params);
    444         params.rect.p0.x = params.rect.p0.y = 0;
    445         params.rect.p1.x = params.rect.p1.y = 1;
    446 
    447         rc = ds_window_create(client, &params, &wnd);
    448         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    449 
    450         PCUT_ASSERT_FALSE(called_cb);
     516        rc = ds_seat_create(disp, &seat);
     517        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     518
     519        display_wnd_params_init(&params);
     520        params.rect.p0.x = params.rect.p0.y = 0;
     521        params.rect.p1.x = params.rect.p1.y = 1;
     522
     523        rc = ds_window_create(client, &params, &wnd);
     524        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     525
     526        /* New window gets focused event */
     527        PCUT_ASSERT_TRUE(called_cb);
     528
     529        rc = ds_client_get_event(client, &rwindow, &revent);
     530        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     531
     532        called_cb = false;
    451533
    452534        rc = ds_client_get_event(client, &rwindow, &revent);
     
    466548
    467549        ds_window_destroy(wnd);
     550        ds_seat_destroy(seat);
    468551        ds_client_destroy(client);
    469552        ds_display_destroy(disp);
     
    479562        ds_display_t *disp;
    480563        ds_client_t *client;
     564        ds_seat_t *seat;
    481565        ds_window_t *wnd;
    482566        display_wnd_params_t params;
     
    489573        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    490574
    491         display_wnd_params_init(&params);
    492         params.rect.p0.x = params.rect.p0.y = 0;
    493         params.rect.p1.x = params.rect.p1.y = 1;
    494 
    495         rc = ds_window_create(client, &params, &wnd);
    496         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    497 
     575        rc = ds_seat_create(disp, &seat);
     576        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     577
     578        display_wnd_params_init(&params);
     579        params.rect.p0.x = params.rect.p0.y = 0;
     580        params.rect.p1.x = params.rect.p1.y = 1;
     581
     582        rc = ds_window_create(client, &params, &wnd);
     583        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     584
     585        ds_seat_destroy(seat);
    498586        ds_client_destroy(client);
    499587        ds_display_destroy(disp);
Note: See TracChangeset for help on using the changeset viewer.