I just compiled a fresh download of the fltk-2.0.x-r6970 tarball.

The demo programs in the test directory show a weird behavior w.r.t the 
window manager, on my laptop. I have tried with 1.1 and 1.3 too, with 
similar results. A few days ago I compiled demo programs without this
strangeness.

I must have done something, but I cannot figure out what. Does anyone see 
what the failure mechanism could be here?

The glpuzzle demo comes with invisible / transparent window manager 
decorations (title bar and border around the window). I can play normally 
with it. It responds to keyboard commands.

I here describe some behaviors that may have been there always, but I 
had never noticed it much before I began investigating this. Invisible
WM decorations is certainly something new.

I have focus-follows-mouse and click-to-raise. When the mouse enter the 
region where the decorations should have been, the other windows loose 
focus (the title bar gets the inactive color). Moving the mouse out again 
gives the focus to the new window that is entered, as it should. This is
normal.

At the edge of where the decorations should have been, the pointer 
assumes the drag-this-border shape.  When I hover the mouse in the area 
where the title bar buttons should have been, the tool-tips "Maximize 
Window", etc, show. All this is normal.

When the tool-tips show, the nearest 3-4 mm area around the tool-tip is 
cleared to the color of whatever is under the glpuzzle, e.g. details of 
the desktop or my console window show through. After the tool-tip is 
gone, the whole tool-tip area is cleared to show whatever is under the 
glpuzzle. Not normal.

I can move the glpuzzle window by dragging the invisible title bar. The 
contents is redrawn in the new position. However, the old position is not 
redrawn to reflect that the glpuzzle is not there. It is as if the 
exposed areas do not receive expose events. This applies to both the
desktop root window and to e.g. console command windows. Not normal.

I use multiple "destops" or "work areas" each with its own set of 
windows.  When I change desktop to one having a running glpuzzle, the 
glpuzzle is either not shown at all, or it just flashes, shows for a tiny 
fraction of a second and disappears. The running glpuzzle shows in the 
taskbar (or whatever it's called in in Gnome, I am on Ubuntu with Gnome). 
When I click the taskbar button, the button becomes gray, as if the 
window is being minimized. The button label is shown in brackets. 
Clicking again unminimizes, and shows the glpuzzle. I can also get 
glpuzzle to show if I can give it focus and hit a key that makes it 
redraw, like 'r' or 's', but not e.g. 'q'.

When glpuzzle redraws, it also draws in regions that are obscured by 
other windows. Since I have click-to-raise, a window can have focus and 
receive keyboard commands while another window is partially obscuring it. 
Not normal.

On the other hand, if glpuzzle is on top of a console window partially 
overlapping it, and I move the mouse into the console window, when the 
console get focus the window decorations of the console are drawn where 
they should not, cutting through the glpuzzle. Not only the decoration, 
also the scrollbar of the console is redrawn. Not normal

If I have evince, a pdf viewer, running in maximized state, and 
unminimize or raise a glpuzzle on top of it, the document area of evince 
quickly redraws to obscure glpuzzle, even glpuzzle should be on top. So 
glpuzzle just flashes, but much slower than when I switch desktops.  
Other areas of evince, the toolbar, menu, etc, do not place themselves in 
front of glpuzzle.  These areas suffer if I move glpuzzle (as already 
described) since they do not seem to get expose events. The same thing 
happens if I maximize glpuzzle and unmaximize it.

I have also tried with the fractals demo. One difference is that the 
window decorations show as they should. But the client area behaves much 
the same way as the glpuzzle, with some effects due to the continuous 
redrawing that happens in an animated demo.

If the fractals window partially overlaps a console, and I give focus to 
the console without raising it, by moving the mouse into the console 
area, then, as the border around the console redraws even where it should 
not, I learn something interesting about the fractals window. The Gnome 
windows manager shows shadows "under" the windows. To achieve this, it 
draws not only the visible border, but also the nearest two-three mm next 
to the border, with a gradual darkening as one approaches the border. The 
shadow region is drawn with the colors of whatever is "under" the window 
and surrounding it.  When the console window border is drawn in spite of 
the fractals window being on top, it does not show the actual contents of 
the fractals window, but the contents the fractals window had before the 
first drawing in GL. This reflects what was in the area when the fractals 
window was created. If the fractals window was created on top of an 
editor window, when the console window later has its borders drawn, 
contents from the editor window shows in the shadow next to the border. 
If I move the fractals window, this contents move along. 

I don't know how exactly that works, but I imagine that the window 
manager asks the X server to blend the shadow with the contents of the 
area, but the X server appears to keep a copy of the fractals' window's 
contents that is unaffected by the opengl drawing operations.

I have also tested with a few non-fltk demos from tcl3d, and find much 
the same behavior, except that glpuzzle is the only that has invisible 
borders. Also, switching desktops works normally, with fractals and with
tcl3d demos. Moving the window leaves unupdated regions behind with all
these programs.

My first guess as to what I may have done, is that perhaps I have got a 
new version of some library as part of the constant stream of security 
updates. Checking the libraries used by glpuzzle, here they are with 
symlinks expanded and with modification dates, sorted with newest last:

 2008-05-19 /usr/lib/libXdmcp.so.6.0.0
 2008-05-19 /usr/lib/libXdamage.so.1.1.0
 2009-02-27 /usr/lib/libXft.so.2.1.13
 2009-03-19 /usr/lib/libfontconfig.so.1.3.0
 2009-04-29 /usr/lib/libXau.so.6.0.0
 2009-05-12 /usr/lib/libXfixes.so.3.1.0
 2009-05-15 /usr/lib/libXi.so.6.0.0
 2009-06-04 /usr/lib/libfreetype.so.6.3.20
 2009-07-28 /usr/lib/libX11.so.6.2.0
 2009-07-28 /usr/lib/libxcb.so.1.1.0
 2009-09-08 /lib/libz.so.1.2.3.3
 2009-09-16 /lib/libexpat.so.1.5.2
 2009-10-07 /lib/librt-2.10.1.so
 2009-10-07 /lib/libm-2.10.1.so
 2009-10-07 /lib/libdl-2.10.1.so
 2009-10-07 /lib/libc-2.10.1.so
 2009-10-07 /lib/libpthread-2.10.1.so
 2009-10-08 /usr/lib/libdrm.so.2.4.0
 2009-10-12 /usr/lib/libXext.so.6.4.0
 2009-10-12 /usr/lib/libXrender.so.1.3.0
 2009-10-12 /usr/lib/libXxf86vm.so.1.0.0
 2009-10-14 /usr/lib/libGL.so.1.2
 2009-10-14 /usr/lib/libGLU.so.1.3.070600
 2009-10-15 /lib/libgcc_s.so.1
 2009-10-15 /usr/lib/libstdc++.so.6.0.13

I have also un-installed every package that seemed related to fltk, and 
downloaded a fresh copy of the source tarball; and done ./configure && 
make with no options. This is on a 64-bit amd laptop, Ubuntu 9.10 "Karmic"
with the latest everything; gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu8).
The video adapter, if it matters is ATI Radeon X1300, without dri support.
The software package manager log shows some xorg packages where upgraded:

2009-12-03 15:17:20 upgrade xserver-xorg-video-all 1:7.4+3ubuntu7 
1:7.4+3ubuntu10
2009-12-03 15:17:20 upgrade xserver-xorg-input-all 1:7.4+3ubuntu7 
1:7.4+3ubuntu10
2009-12-03 15:17:20 upgrade xserver-xorg 1:7.4+3ubuntu7 1:7.4+3ubuntu10
2009-12-03 15:17:21 upgrade xorg 1:7.4+3ubuntu7 1:7.4+3ubuntu10
2009-12-03 15:17:22 install xorg-options-editor-gtk <none> 0.2ubuntu2
2009-12-03 15:17:22 install libpciaccess-dev <none> 0.10.6-2ubuntu1
2009-12-03 15:17:22 install xserver-xorg-dev <none> 2:1.6.4-2ubuntu4

but I think this was before i last toyed with a glpuzzle that had the 
title bar and border intact.

Any ideas?

Thanks.

_______________________________________________
fltk-opengl mailing list
fltk-opengl@easysw.com
http://lists.easysw.com/mailman/listinfo/fltk-opengl

Reply via email to