Hi, I am not entirely familiar with your setup, but you can try to use a combination of:
1. Setting your on-top window's input region to empty as you already have tried. 2. Use xdg-foreign protocol to set the main window as parent of your on-top window. This will work on all compositors that support xdg-foreign, however I am not sure whether weston supports it. Regards, Ilia Bozhinov On Tue, 19 Nov 2019, 09:53 Guillermo Rodriguez, < guillerodriguez....@gmail.com> wrote: > Hi all, > > This is a follow up to my earlier email "Let pointer events pass through". > > I have an use case where there is one full screen application (I'll > call this the "main" application) and I need to show a OSD overlay on > top of it. The OSD overlay is actually based on GStreamer (think PiP) > and is managed by a different process. > The OSD overlay should not handle pointer events; these should pass > through to the main application, which knows how to handle them. > > I am not sure how to approach this in Wayland/Weston. I have > considered the following: > > 1. > Use wl_surface::set_input_region so that pointer events are not > delivered to the OSD overlay, but instead pass through and are handled > by the main application. > This "almost" works, however when the main application receives the > event, Weston brings it on top, thus hiding the OSD overlay. > I searched for a way to specify that a given surface should always > stay "on top". This does not seem to be supported in Wayland. > > 2. > Setup things so that the OSD overlay is not an additional top level > surface, but a child surface owned by the main application. > This would mean having the main application create a child surface for > the OSD, and pass this surface to the OSD process. > In X this could be achieved by passing a Windows ID. In Wayland > apparently it is not possible to share surfaces between processes. > > 3. > Let the OSD overlay actually handle pointer events, but "send" them to > the main application. > In X this could be achieved with XSendEvent. In Wayland apparently it > is not possible to have one process send events to another process. > > Not sure what else to try. > > Any ideas? Either ways to make one of the above work, or new approaches... > > TIA, > > Guillermo Rodriguez > _______________________________________________ > wayland-devel mailing list > wayland-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/wayland-devel
_______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel