diff options
author | Michel Dänzer <mdaenzer@redhat.com> | 2021-04-19 18:01:52 +0200 |
---|---|---|
committer | Michel Dänzer <michel@daenzer.net> | 2021-07-09 16:13:32 +0200 |
commit | 244403ec8718d782d57a830ece9357a75a0dd70b (patch) | |
tree | afbd3f73258bd4d9be98cc0b54891211e9ee6529 /hw/xwayland/xwayland-present.c | |
parent | f7adbc2166b7a4662cbd69507d8cbac11034c87e (diff) |
xwayland/present: Fold present_wnmd_abort_vblank into its only caller
No need for them to be separate anymore.
Acked-by: Olivier Fourdan <ofourdan@redhat.com>
Diffstat (limited to 'hw/xwayland/xwayland-present.c')
-rw-r--r-- | hw/xwayland/xwayland-present.c | 64 |
1 files changed, 27 insertions, 37 deletions
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c index b24dff9a2..6adff2a60 100644 --- a/hw/xwayland/xwayland-present.c +++ b/hw/xwayland/xwayland-present.c @@ -635,31 +635,6 @@ present_wnmd_pixmap(WindowPtr window, return Success; } -static void -present_wnmd_abort_vblank(ScreenPtr screen, WindowPtr window, RRCrtcPtr crtc, uint64_t event_id, uint64_t msc) -{ - struct xwl_present_window *xwl_present_window = xwl_present_window_priv(window); - present_screen_priv_ptr screen_priv = present_screen_priv(screen); - present_vblank_ptr vblank; - - (*screen_priv->wnmd_info->abort_vblank) (window, crtc, event_id, msc); - - xorg_list_for_each_entry(vblank, &xwl_present_window->exec_queue, event_queue) { - if (vblank->event_id == event_id) { - xorg_list_del(&vblank->event_queue); - vblank->queued = FALSE; - return; - } - } - xorg_list_for_each_entry(vblank, &xwl_present_window->flip_queue, event_queue) { - if (vblank->event_id == event_id) { - xorg_list_del(&vblank->event_queue); - vblank->queued = FALSE; - return; - } - } -} - static void xwl_present_release_pixmap(struct xwl_present_event *event) @@ -903,27 +878,43 @@ xwl_present_queue_vblank(WindowPtr present_window, * to the extension */ static void -xwl_present_abort_vblank(WindowPtr present_window, +xwl_present_abort_vblank(ScreenPtr screen, + WindowPtr present_window, RRCrtcPtr crtc, uint64_t event_id, uint64_t msc) { struct xwl_present_window *xwl_present_window = xwl_present_window_priv(present_window); struct xwl_present_event *event, *tmp; + present_vblank_ptr vblank; - if (!xwl_present_window) - return; + if (xwl_present_window) { + xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->wait_list, list) { + if (event->event_id == event_id) { + xwl_present_free_event(event); + break; + } + } - xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->wait_list, list) { - if (event->event_id == event_id) { - xwl_present_free_event(event); - return; + xorg_list_for_each_entry(event, &xwl_present_window->release_list, list) { + if (event->event_id == event_id) { + event->abort = TRUE; + break; + } } } - xorg_list_for_each_entry(event, &xwl_present_window->release_list, list) { - if (event->event_id == event_id) { - event->abort = TRUE; + xorg_list_for_each_entry(vblank, &xwl_present_window->exec_queue, event_queue) { + if (vblank->event_id == event_id) { + xorg_list_del(&vblank->event_queue); + vblank->queued = FALSE; + return; + } + } + xorg_list_for_each_entry(vblank, &xwl_present_window->flip_queue, event_queue) { + if (vblank->event_id == event_id) { + xorg_list_del(&vblank->event_queue); + vblank->queued = FALSE; return; } } @@ -1186,7 +1177,6 @@ static present_wnmd_info_rec xwl_present_info = { .get_ust_msc = xwl_present_get_ust_msc, .queue_vblank = xwl_present_queue_vblank, - .abort_vblank = xwl_present_abort_vblank, .capabilities = PresentCapabilityAsync, .check_flip2 = xwl_present_check_flip2, @@ -1229,7 +1219,7 @@ xwl_present_init(ScreenPtr screen) screen_priv->flush = xwl_present_flush; screen_priv->re_execute = present_wnmd_re_execute; - screen_priv->abort_vblank = present_wnmd_abort_vblank; + screen_priv->abort_vblank = xwl_present_abort_vblank; return TRUE; } |