xwayland: Rename present event lists
Rename the lists release_queue to release_list and event_list to wait_list. The prior names release_queue and event_list were ambiguous: in both are event- like vblanks which can be removed from the lists in random order. In the release_queue can be flips that are already released but still wait for the sync or frame callback but normally the release comes later. In the event_list are queued events waiting for a later msc. Signed-off-by: Roman Gilg <subdiff@gmail.com>
This commit is contained in:
parent
0db326e5ca
commit
f8211095c3
|
@ -67,8 +67,8 @@ xwl_present_window_get_priv(WindowPtr window)
|
||||||
xwl_present_window->ust = GetTimeInMicros();
|
xwl_present_window->ust = GetTimeInMicros();
|
||||||
|
|
||||||
xorg_list_init(&xwl_present_window->frame_callback_list);
|
xorg_list_init(&xwl_present_window->frame_callback_list);
|
||||||
xorg_list_init(&xwl_present_window->event_list);
|
xorg_list_init(&xwl_present_window->wait_list);
|
||||||
xorg_list_init(&xwl_present_window->release_queue);
|
xorg_list_init(&xwl_present_window->release_list);
|
||||||
|
|
||||||
dixSetPrivate(&window->devPrivates,
|
dixSetPrivate(&window->devPrivates,
|
||||||
&xwl_present_window_private_key,
|
&xwl_present_window_private_key,
|
||||||
|
@ -91,16 +91,16 @@ xwl_present_timer_callback(OsTimerPtr timer,
|
||||||
void *arg);
|
void *arg);
|
||||||
|
|
||||||
static inline Bool
|
static inline Bool
|
||||||
xwl_present_has_events(struct xwl_present_window *xwl_present_window)
|
xwl_present_has_pending_events(struct xwl_present_window *xwl_present_window)
|
||||||
{
|
{
|
||||||
return !!xwl_present_window->sync_flip ||
|
return !!xwl_present_window->sync_flip ||
|
||||||
!xorg_list_is_empty(&xwl_present_window->event_list);
|
!xorg_list_is_empty(&xwl_present_window->wait_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xwl_present_reset_timer(struct xwl_present_window *xwl_present_window)
|
xwl_present_reset_timer(struct xwl_present_window *xwl_present_window)
|
||||||
{
|
{
|
||||||
if (xwl_present_has_events(xwl_present_window)) {
|
if (xwl_present_has_pending_events(xwl_present_window)) {
|
||||||
CARD32 timeout;
|
CARD32 timeout;
|
||||||
|
|
||||||
if (!xorg_list_is_empty(&xwl_present_window->frame_callback_list))
|
if (!xorg_list_is_empty(&xwl_present_window->frame_callback_list))
|
||||||
|
@ -156,12 +156,12 @@ xwl_present_cleanup(WindowPtr window)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clear remaining events */
|
/* Clear remaining events */
|
||||||
xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->event_list, list)
|
xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->wait_list, list)
|
||||||
xwl_present_free_event(event);
|
xwl_present_free_event(event);
|
||||||
|
|
||||||
xwl_present_free_event(xwl_present_window->sync_flip);
|
xwl_present_free_event(xwl_present_window->sync_flip);
|
||||||
|
|
||||||
xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->release_queue, list)
|
xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->release_list, list)
|
||||||
xwl_present_free_event(event);
|
xwl_present_free_event(event);
|
||||||
|
|
||||||
/* Clear timer */
|
/* Clear timer */
|
||||||
|
@ -222,12 +222,12 @@ xwl_present_msc_bump(struct xwl_present_window *xwl_present_window)
|
||||||
xwl_present_window->ust, msc);
|
xwl_present_window->ust, msc);
|
||||||
xwl_present_free_event(event);
|
xwl_present_free_event(event);
|
||||||
} else {
|
} else {
|
||||||
xorg_list_add(&event->list, &xwl_present_window->release_queue);
|
xorg_list_add(&event->list, &xwl_present_window->release_list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
xorg_list_for_each_entry_safe(event, tmp,
|
xorg_list_for_each_entry_safe(event, tmp,
|
||||||
&xwl_present_window->event_list,
|
&xwl_present_window->wait_list,
|
||||||
list) {
|
list) {
|
||||||
if (event->target_msc <= msc) {
|
if (event->target_msc <= msc) {
|
||||||
present_wnmd_event_notify(xwl_present_window->window,
|
present_wnmd_event_notify(xwl_present_window->window,
|
||||||
|
@ -363,7 +363,7 @@ xwl_present_queue_vblank(WindowPtr present_window,
|
||||||
event->xwl_present_window = xwl_present_window;
|
event->xwl_present_window = xwl_present_window;
|
||||||
event->target_msc = msc;
|
event->target_msc = msc;
|
||||||
|
|
||||||
xorg_list_append(&event->list, &xwl_present_window->event_list);
|
xorg_list_append(&event->list, &xwl_present_window->wait_list);
|
||||||
|
|
||||||
/* If there's a pending frame callback, use that */
|
/* If there's a pending frame callback, use that */
|
||||||
if (xwl_window && xwl_window->frame_callback &&
|
if (xwl_window && xwl_window->frame_callback &&
|
||||||
|
@ -395,14 +395,14 @@ xwl_present_abort_vblank(WindowPtr present_window,
|
||||||
if (!xwl_present_window)
|
if (!xwl_present_window)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->event_list, list) {
|
xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->wait_list, list) {
|
||||||
if (event->event_id == event_id) {
|
if (event->event_id == event_id) {
|
||||||
xwl_present_free_event(event);
|
xwl_present_free_event(event);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
xorg_list_for_each_entry(event, &xwl_present_window->release_queue, list) {
|
xorg_list_for_each_entry(event, &xwl_present_window->release_list, list) {
|
||||||
if (event->event_id == event_id) {
|
if (event->event_id == event_id) {
|
||||||
event->abort = TRUE;
|
event->abort = TRUE;
|
||||||
return;
|
return;
|
||||||
|
@ -477,7 +477,7 @@ xwl_present_flip(WindowPtr present_window,
|
||||||
xorg_list_init(&event->list);
|
xorg_list_init(&event->list);
|
||||||
xwl_present_window->sync_flip = event;
|
xwl_present_window->sync_flip = event;
|
||||||
} else {
|
} else {
|
||||||
xorg_list_add(&event->list, &xwl_present_window->release_queue);
|
xorg_list_add(&event->list, &xwl_present_window->release_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
xwl_pixmap_set_buffer_release_cb(pixmap, xwl_present_buffer_release, event);
|
xwl_pixmap_set_buffer_release_cb(pixmap, xwl_present_buffer_release, event);
|
||||||
|
|
|
@ -45,8 +45,8 @@ struct xwl_present_window {
|
||||||
|
|
||||||
struct wl_callback *sync_callback;
|
struct wl_callback *sync_callback;
|
||||||
|
|
||||||
struct xorg_list event_list;
|
struct xorg_list wait_list;
|
||||||
struct xorg_list release_queue;
|
struct xorg_list release_list;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct xwl_present_event {
|
struct xwl_present_event {
|
||||||
|
|
Loading…
Reference in New Issue