print ' if (drawable_width > (int)glretrace::drawable->width ||'
print ' drawable_height > (int)glretrace::drawable->height) {'
print ' glretrace::drawable->resize(drawable_width, drawable_height);'
+ print ' if (!glretrace::drawable->visible) {'
+ print ' glretrace::drawable->show();'
+ print ' }'
print ' glScissor(0, 0, drawable_width, drawable_height);'
print ' }'
print ' }'
const Visual *visual;
int width;
int height;
+ bool visible;
Drawable(const Visual *vis, int w, int h) :
visual(vis),
width(w),
- height(h)
+ height(h),
+ visible(false)
{}
virtual ~Drawable() {}
height = h;
}
+ virtual void
+ show(void) {
+ visible = true;
+ }
+
virtual void swapBuffers(void) = 0;
};
display, window, name, name,
None, (char **)NULL, 0, &sizehints);
- XMapWindow(display, window);
-
- waitForEvent(window, Expose);
glXWaitX();
}
glXWaitX();
}
+ void show(void) {
+ if (!visible) {
+ XMapWindow(display, window);
+
+ waitForEvent(window, Expose);
+
+ Drawable::show();
+ }
+ }
+
void swapBuffers(void) {
glXSwapBuffers(display, window);
}
}
dwExStyle = 0;
- dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_VISIBLE | WS_OVERLAPPEDWINDOW;
+ dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW;
int x = 0, y = 0;
SetWindowPos(hWnd, NULL, rWindow.left, rWindow.top, w, h, SWP_NOMOVE);
}
+ void show(void) {
+ if (!visible) {
+ ShowWindow(hWnd, SW_SHOW);
+
+ Drawable::show();
+ }
+ }
+
void swapBuffers(void) {
SwapBuffers(hDC);
}