Hi, Using Xgl, when a window is unminimized, sometimes (especially with Firefox), the window contents are not immediately visible (partially or completely) until an unminimize animation is completed. That is, sometimes there are empty (transparent) rectangles within the window (maybe corresponding to some Mozilla controls), and sometimes the whole window is empty (only the decoration is visible). This is more of an issue with cpu-hungry effects (well, most of them if you are using Xgl + fglrx). To avoid this, I want to wait until the window contents are *fully* available before I start any unminimize animations. My question is how can I know the right time? Is there a certain place in core that I can maybe throw a notification event from for this? If not, what is the best way to solve this problem? Should I just wait for a certain amount of time for certain applications (like Firefox)? Cheers, Erkin
> Hi, > > Using Xgl, when a window is unminimized, sometimes (especially with > Firefox), the window contents are not immediately visible (partially > or completely) until an unminimize animation is completed. That is, > sometimes there are empty (transparent) rectangles within the window > (maybe corresponding to some Mozilla controls), and sometimes the > whole window is empty (only the decoration is visible). This is more > of an issue with cpu-hungry effects (well, most of them if you are > using Xgl + fglrx). > > To avoid this, I want to wait until the window contents are *fully* > available before I start any unminimize animations. My question is how > can I know the right time? Is there a certain place in core that I can > maybe throw a notification event from for this? If not, what is the > best way to solve this problem? Should I just wait for a certain > amount of time for certain applications (like Firefox)? > > Cheers, > ErkinI can confirm this on OpenSuSE 10.2, i915 and Xorg 7.2. Firefox windows are sometimes completely blank when unminimizing. Usually only some parts are invisible (Firefox's toolbar). It doesn't happen with slow animations on. -- Hendrik Kaju <hendrik at kaju.pri.ee>
And this is also happening when opening and unshading some windows (again especially Firefox). So I guess all map events have this problem. Does anybody have an idea how to solve this, other than waiting for a fixed amount of time for, say, Firefox windows? On 4/11/07, Hendrik Kaju <hendrik@kaju.pri.ee> wrote:> > Hi, > > > > Using Xgl, when a window is unminimized, sometimes (especially with > > Firefox), the window contents are not immediately visible (partially > > or completely) until an unminimize animation is completed. That is, > > sometimes there are empty (transparent) rectangles within the window > > (maybe corresponding to some Mozilla controls), and sometimes the > > whole window is empty (only the decoration is visible). This is more > > of an issue with cpu-hungry effects (well, most of them if you are > > using Xgl + fglrx). > > > > To avoid this, I want to wait until the window contents are *fully* > > available before I start any unminimize animations. My question is how > > can I know the right time? Is there a certain place in core that I can > > maybe throw a notification event from for this? If not, what is the > > best way to solve this problem? Should I just wait for a certain > > amount of time for certain applications (like Firefox)? > > > > Cheers, > > Erkin > > I can confirm this on OpenSuSE 10.2, i915 and Xorg 7.2. Firefox windows > are sometimes completely blank when unminimizing. Usually only some > parts are invisible (Firefox's toolbar). It doesn't happen with slow > animations on. > -- > Hendrik Kaju <hendrik@kaju.pri.ee> > >
On Wed, 2007-04-11 at 03:29 -0500, Erkin Bahceci wrote:> Hi, > > Using Xgl, when a window is unminimized, sometimes (especially with > Firefox), the window contents are not immediately visible (partially > or completely) until an unminimize animation is completed. That is, > sometimes there are empty (transparent) rectangles within the window > (maybe corresponding to some Mozilla controls), and sometimes the > whole window is empty (only the decoration is visible). This is more > of an issue with cpu-hungry effects (well, most of them if you are > using Xgl + fglrx). > > To avoid this, I want to wait until the window contents are *fully* > available before I start any unminimize animations. My question is how > can I know the right time? Is there a certain place in core that I can > maybe throw a notification event from for this? If not, what is the > best way to solve this problem? Should I just wait for a certain > amount of time for certain applications (like Firefox)?The sync request protocol (_NET_WM_SYNC_REQUEST in the EWMH spec) allow this and compiz should automatically wait with drawing windows until window contents is *fully* available for applications that support it. A damageWindowRect call with "initial" argument set to TRUE is the indication that a newly mapped window has become available for drawing. It's not much we can do for applications that don't support the sync request protocol. Compiz will currently consider the first damage event an indication that the window is available for drawing and I don't think we can do much better than that. All gtk apps should automatically support this protocol but I'm not sure about Firefox. Waiting for a certain amount of time is a bad idea. If an application doesn't support the sync request protocol you should bug the developers. - David