On Thu, 3 Nov 2022 15:14:00 -0700 Joel Winarske <joel.winar...@gmail.com> wrote:
> Hi pq, > > I was thinking of a more full-featured example using sub surfaces with > runtime positioning and z-order control. > > That aside I am having an interesting problem. In case of multiple > surfaces, I only see the frame event for the last added surface. > > Surface A is behind B and C (tiled), none occluded. > > Here I get a frame callback for B. I'm using the commit pattern from B to > Base. > Surface B > Surface A > Base > > Adding sub surface C, with registered callbacks for B and C, I only see a > frame callback for C. I'm using the commit pattern from C to Base. > Surface C > Surface B > Surface A > Base > > I don't touch the B callback when the C callback is added. Please, be more specific about which requests and when you are sending. From the above, I can guess the wl_surface.commit requests, but I do not see when exactly you do e.g. wl_surface.frame and on which surface. > Does anything stand out? The only guess I have is that you missed this part from wl_surface.frame specification: > The notification will only be posted for one frame unless requested > again. and > The object returned by this request will be destroyed by the > compositor after the callback is fired and as such the client must > not attempt to use it after that point. So every time you want to receive a frame callback, you need to create a new wl_callback object with wl_surface.frame. And every time wl_callback.done is delivered, you must destroy the wl_callback. You can also destroy the wl_callback at any time, if you are no longer interested in it. Thanks, pq
pgpx8_XYcXogQ.pgp
Description: OpenPGP digital signature