source: mainline/uspace/srv/hid/display/client.h@ a6492460

ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since a6492460 was 98735eb, checked in by jxsvoboda <5887334+jxsvoboda@…>, 4 years ago

Purge events from client event queue when destroying window

If the client had events queued for a particular window and that got
destroyed, later these events, pointing to freed (and reused) memory
would be handed to the client with the wrong window ID (which was
read from the wrong/recycled memory block).

  • Property mode set to 100644
File size: 2.8 KB
Line 
1/*
2 * Copyright (c) 2019 Jiri Svoboda
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup display
30 * @{
31 */
32/**
33 * @file Display server client
34 */
35
36#ifndef CLIENT_H
37#define CLIENT_H
38
39#include <errno.h>
40#include <io/kbd_event.h>
41#include <io/pos_event.h>
42#include "types/display/client.h"
43#include "types/display/display.h"
44
45extern errno_t ds_client_create(ds_display_t *, ds_client_cb_t *, void *,
46 ds_client_t **);
47extern void ds_client_destroy(ds_client_t *);
48extern void ds_client_add_window(ds_client_t *, ds_window_t *);
49extern void ds_client_remove_window(ds_window_t *);
50extern ds_window_t *ds_client_find_window(ds_client_t *, ds_wnd_id_t);
51extern ds_window_t *ds_client_first_window(ds_client_t *);
52extern ds_window_t *ds_client_next_window(ds_window_t *);
53extern errno_t ds_client_get_event(ds_client_t *, ds_window_t **,
54 display_wnd_ev_t *);
55extern void ds_client_purge_window_events(ds_client_t *, ds_window_t *);
56extern errno_t ds_client_post_close_event(ds_client_t *, ds_window_t *);
57extern errno_t ds_client_post_focus_event(ds_client_t *, ds_window_t *);
58extern errno_t ds_client_post_kbd_event(ds_client_t *, ds_window_t *,
59 kbd_event_t *);
60extern errno_t ds_client_post_pos_event(ds_client_t *, ds_window_t *,
61 pos_event_t *);
62extern errno_t ds_client_post_resize_event(ds_client_t *, ds_window_t *,
63 gfx_rect_t *);
64extern errno_t ds_client_post_unfocus_event(ds_client_t *, ds_window_t *);
65
66#endif
67
68/** @}
69 */
Note: See TracBrowser for help on using the repository browser.