Commits on Source (5)
-
The window backend triggers a callback of the vout, and the vout forwards this to the display using another callback. There are several unfortunate layers of glue and indirections in the callchain. In particular, we need to persist these ICC profile objects in some layer, because of init order between windowing system and the window / vout display module itself. I've chosen to add them to `vout_display_cfg_t` because it fits well with the other "dynamic window state" properties in there. This approach also allows capable vouts to read directly from the allocated ICC profile memory, minimizing the number of memcpys.
354f3aae -
Pretty straightforward. Rather than wasting cycles computing a checksum each frame, just update the signature once per received ICC change control event.
690f6335 -
This is non-functional on its own, but introduces necessary display tracking information that will be useful in the following commit(s), like figuring out which display's ICC profile to query for the VLC window.
927db833 -
Needed for RandR-related code in future commit.
8e88fd24 -
We need to update the ICC profile either if the window moves to a new display, or if the root window atom associated with a given display is updated. To this end, we need to start tracking property changes on the root window, as well as updating this atom every time the window moves to a new display. Unfortunately, this code again requires one memcpy more than I'd like to have there, as a result of xcb not letting me fetch properties into my own buffers. If we determine this to be a performance issue later on, the straightforward fix would be to make vlc_icc_profile_t refcounted with a custom free callback.
4823a53b
Showing
- include/vlc_vout_display.h 10 additions, 0 deletionsinclude/vlc_vout_display.h
- include/vlc_window.h 29 additions, 0 deletionsinclude/vlc_window.h
- modules/video_output/libplacebo/display.c 15 additions, 0 deletionsmodules/video_output/libplacebo/display.c
- modules/video_output/xcb/Makefile.am 3 additions, 2 deletionsmodules/video_output/xcb/Makefile.am
- modules/video_output/xcb/window.c 277 additions, 30 deletionsmodules/video_output/xcb/window.c
- src/video_output/display.c 9 additions, 0 deletionssrc/video_output/display.c
- src/video_output/video_output.c 20 additions, 0 deletionssrc/video_output/video_output.c
- src/video_output/video_window.c 15 additions, 0 deletionssrc/video_output/video_window.c
- src/video_output/vout_internal.h 1 addition, 0 deletionssrc/video_output/vout_internal.h
- src/video_output/vout_wrapper.h 1 addition, 0 deletionssrc/video_output/vout_wrapper.h