- 09 Jul, 2021 39 commits
-
-
It's redundant with the pixmap member of struct xwl_present_event. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Where the latter isn't really needed. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
The only difference was unhooking from the vblank.event_queue list, which is already done by xwl_present_flip_notify_vblank in xwl_present_msc_bump.
-
Use present_vblank_rec::exec_msc instead. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
We are handling two cases here: the active flip or the pending flip. For the pending flip (event->pending == TRUE), we called xwl_present_release_pixmap. For the active flip (event->pending == FALSE), we called xwl_present_release_event. However, xwl_present_flip_notify_vblank already unhooked event->vblank.event_queue. So this was effectively the same as calling xwl_present_release_pixmap. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Use present_vblank_rec::event_queue instead. The changes in xwl_present_execute shouldn't really be needed, since we should never hit queue_vblank in present_execute_wait. But let's be safe rather than sorry, plus this simplifies the code. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Doesn't serve any purpose anymore. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Can just call xwl_present_execute directly. This allows dropping the window member from struct xwl_present_window as well. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
We clear the vblank->pixmap field, so next time xwl_present_execute falls through to present_execute_post. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Allows simplification by avoiding indirection. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
The same information can be determined from the flip queue. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Use the first element of the flip_queue list for the same purpose. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
No need for them to be separate anymore. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
This allows for various simplifications. Use the pointer to the struct memory as the event ID. In contrast to the SCMD code for Xorg (where pending DRM events cannot be cancelled), this is safe here, because we can destroy pending Wayland callbacks. So we can't get a callback with a stale pointer to freed memory. Remove xwl_present_window::release_list in favour of present_vblank_rec::window_list. Remove xwl_present_event::xwl_present_window in favour of present_vblank_rec::window. xwl_present_free_event is never called for a NULL pointer anymore, no need to check. v2: * Restore DestroyWindow wrapping order to make sure present_destroy_window doesn't call xwl_present_abort_vblank. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Allows embedding into another struct. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
We can call xwl_present_free_event unconditionally from xwl_present_abort_vblank, since the sync_callback is already destroyed in xwl_present_cleanup. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Change parameter types to what's really needed, or just fold the function into its only caller. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
The WNMD indirection is gone. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Doesn't serve any purpose anymore. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Just use the latter instead of the former elsewhere. No need for them to be separate anymore. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Just use xwl_present_get_ust_msc directly. No need for the indirection anymore. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Just use xwl_present_queue_vblank directly. No need for the indirection anymore. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
And use xwl_present_get_crtc directly. No need for them to be separate anymore. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Mainly into xwl_present_check_flip, and call that from present_wnmd_check_flip_window. No need for them to be separate anymore. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
No need for the WNMD indirection anymore. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
No need for them to be separate anymore. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
No need for the indirection anymore. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
No need for the indirection anymore. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
No need for them to be separate anymore. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
This will allow eliminating indirections and making the Xwayland Present code more efficient and easier to follow. While this technically changes the Xorg video driver ABI, I don't know of any drivers using the dropped present_wnmd_* symbols, and I doubt a Xorg driver could make use of them as is anyway. (As a bonus, Xorg no longer links any Xwayland specific Present code) v2: * Wrap DestroyWindow before initializing Present, so that present_destroy_window runs before xwl_present_cleanup. Avoids crash due to present_destroy_window calling xwl_present_* functions when xwl_present_window was already freed. (Olivier Fourdan) Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Preparation for moving WNMD code to hw/xwayland. No functional change intended. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Now all WNMD code is in present_wnmd.c. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Eliminates special cases in present_destroy_window. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Each present_vblank_create caller generates and sets the ID afterwards. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Preparation for moving WNMD code to hw/xwayland. No functional change intended. Acked-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Not sure why we'd need to abandon a pending stream for a pixmap just because it's no longer a window pixmap. Let's try not to. Reviewed-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Into a new xwl_eglstream_destroy_pending_stream helper. Reviewed-by:
Olivier Fourdan <ofourdan@redhat.com>
-
This makes sure RandR events are sent to interested clients as needed. This was happening implicitly in some cases, but not in others, e.g. if the root window size didn't change. If this were to call RRTellChanged more often than necessary in some cases, that should be harmless, as it only sends events if something has actually changed since last time. Should fix https://bugzilla.redhat.com/show_bug.cgi?id=1979892 . v2: * Call RRTellChanged at the very end of update_screen_size, just in case. Reviewed-by:
Olivier Fourdan <ofourdan@redhat.com>
-
This can happen if RRTellChanged is called during initialization. Continuing in that case makes no sense conceptually: * Any event sent over the wire requires a corresponding window. * No root window probably means there can't be any clients which could receive the events. In practice, it would result in a crash down the road due to dereferencing the NULL ScreenRec::root pointer. Reviewed-by:
Olivier Fourdan <ofourdan@redhat.com>
-
- 08 Jul, 2021 1 commit
-
-
Matt Turner authored
Signed-off-by:
Matt Turner <mattst88@gmail.com>
-