GNOME Bugzilla – Bug 703368
backend: sync totem_aspect_frame_pick and totem_aspect_frame_paint
Last modified: 2013-10-01 07:58:42 UTC
Created attachment 248117 [details] [review] backend: sync totem_aspect_frame_paint and totem_aspect_frame_pick Fixes: (totem:24473): Clutter-WARNING **: The required ID of 2 does not refer to an existing actor; this usually implies that the pick() of an actor is not correctly implemented or that there is an error in the glReadPixels() implementation of the GL driver. This one could get fixed the opposite way, ie syncing paint with pick.
Lionel?
Could you fill in the version affected by this problem? 3.6/3.8/master?
3.9.x
I don't think this patch is fixing anything here. Could you explain a bit more why you think that would be the case?
I still see warnings when double-clicking on the video even with this patch: (totem:31128): Clutter-WARNING **: The required ID of 16764074 does not refer to an existing actor; this usually implies that the pick() of an actor is not correctly implemented or that there is an error in the glReadPixels() implementation of the GL driver.
back then I found that the allocation box, did not matched the rectrangle that _paint uses to clip. Thus then pick fails . I will renew the analysis process in a week or two as I did not get the issue anymore and you did.
Created attachment 255970 [details] [review] backend: totem_aspect_frame - Fixes pick of the actor. Fixes: (totem:24473): Clutter-WARNING **: The required ID of 2 does not refer to an existing actor; this usually implies that the pick() of an actor is not correctly implemented or that there is an error in the glReadPixels() implementation of the GL driver. Let parent do the pick "draw" for the container as per Example 24. Pick implementation of a container of the clutter reference manual version 1.8, Section "Implementing a new actor". Also in the pick, only call the container while expanded to sync with the paint.
Review of attachment 255970 [details] [review]: I would have replaced : cogl_set_source_color4ub (color->red, color->green, color->blue, color->alpha); cogl_rectangle (box.x1, box.y1, box.x2, box.y2); by CLUTTER_ACTOR_CLASS (totem_aspect_frame_parent_class)->pick (actor, color); and left everything else as it is. I think I now get the problem. The aspectframe widget is probably not a reactive actor, though, because we do a custom pick we're probably painting something that is not listed as an expected actor. So the chain up probably the only thing that needs to be fixed.
Created attachment 256082 [details] [review] v2: backend: totem_aspect_frame - Fixes pick of the actor. indeed that does the job. Thanks
Review of attachment 256082 [details] [review]: Looks good otherwise to commit to master, gnome-3-8 and gnome-3-10. ::: src/backend/totem-aspect-frame.c @@ +321,3 @@ clutter_actor_get_allocation_box (actor, &box); + CLUTTER_ACTOR_CLASS (totem_aspect_frame_parent_class)-> One-liner?
https://bug703368.bugzilla-attachments.gnome.org/attachment.cgi?id=256082 has : - cogl_set_source_color4ub (color->red, color->green, - color->blue, color->alpha); - cogl_rectangle (box.x1, box.y1, box.x2, box.y2); + CLUTTER_ACTOR_CLASS (totem_aspect_frame_parent_class)-> + pick (actor, color); looks fine. What would be the one line ? Cannot commit , my bad for postponing the commit access process for too long .
Created attachment 256159 [details] [review] backend: totem_aspect_frame - Fixes pick of the actor. Fixes: (totem:24473): Clutter-WARNING **: The required ID of 2 does not refer to an existing actor; this usually implies that the pick() of an actor is not correctly implemented or that there is an error in the glReadPixels() implementation of the GL driver. Let parent do the pick "draw" for the container as per Example 24. Pick implementation of a container of the clutter reference manual version 1.8, Section "Implementing a new actor".