Expose event not occuring from gdk_window_invalidate_rect under XP



First some background information. I'm writing an application to display a 3D object in a drawing area widget that uses OpenGL via the GtkGLExt extension. I've mainly developed the application under Linux. I have the drawing area setup to act on configure, expose, button press, button release, and button motion signal/events. If the window is reconfigured the drawing area widget expands. If you press a mouse button and drag the object is rotated as the mouse moves. (After getting the mouse movement I call a gdk_window_invalidate_rect() so that an expose event is created and the expose callback draws the object in the updated state. This all works find and dandy under Linux. (Using GTK+ 2.4.13 under linux I believe, whatever is standard under RH FC 3).

I also need to have this application work under Windows XP. So, I compile the same code under XP using MSYS and the GTK+ 2.4.14 (Tor) libraries. When I run the executable I am unable to rotate the object. Using print statements, I know that the button motion callback is being executed and I have a gdk_window_invalidate_rect within this routine. However, the expose event handler (which should be called due to the gdk_window_invalidate_rect) is not being called. If I stretch the window some horizontally so that the drawing area expands after some point (321 pixels for some reason), the application starts behaving correctly. That is, dragging the mouse results in the object being updated as it is moved. Stretching vertically does not seem to have an effect. If I shrink the window horizontally (after some point) it goes back to its original behavior of not updating. Also, this problem is not just isolated with the mouse dragging. Other commands (widgets) in the interface which should cause the display to change in some manner and be updated via an expose event that is supposed to be generated by a call to gdk_window_invalidate_rect are also not occurring.

Next, I then took this same windows executable and tried it on a Win 2000 machine with the same GTK+ libraries. On this machine the application is working as it should. Mouse dragging results in the expose event handler eventually being called via the gdk_window_invalidate_rect().




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]