summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Fl_x.cxx4
-rw-r--r--src/drivers/X11/Fl_X11_Window_Driver.H1
-rw-r--r--src/drivers/X11/Fl_X11_Window_Driver.cxx6
3 files changed, 7 insertions, 4 deletions
diff --git a/src/Fl_x.cxx b/src/Fl_x.cxx
index 99da7f755..508105658 100644
--- a/src/Fl_x.cxx
+++ b/src/Fl_x.cxx
@@ -2220,7 +2220,9 @@ Fl_X* Fl_X::set_xid(Fl_Window* win, Window winxid) {
xp->next = Fl_X::first;
xp->region = 0;
xp->wait_for_expose = 1;
- xp->backbuffer_bad = 1;
+#ifdef USE_XDBE
+ ((Fl_X11_Window_Driver*)win->driver())->backbuffer_bad = 1;
+#endif
Fl_X::first = xp;
if (win->modal()) {Fl::modal_ = win; fl_fix_focus();}
return xp;
diff --git a/src/drivers/X11/Fl_X11_Window_Driver.H b/src/drivers/X11/Fl_X11_Window_Driver.H
index e976619ee..e255e8c94 100644
--- a/src/drivers/X11/Fl_X11_Window_Driver.H
+++ b/src/drivers/X11/Fl_X11_Window_Driver.H
@@ -69,6 +69,7 @@ private:
void shape_alpha_(Fl_Image* img, int offset);
void flush_double(int erase_overlay);
#ifdef USE_XDBE
+ char backbuffer_bad;
void flush_double_dbe(int erase_overlay);
#endif
diff --git a/src/drivers/X11/Fl_X11_Window_Driver.cxx b/src/drivers/X11/Fl_X11_Window_Driver.cxx
index a6171184c..b5f056a24 100644
--- a/src/drivers/X11/Fl_X11_Window_Driver.cxx
+++ b/src/drivers/X11/Fl_X11_Window_Driver.cxx
@@ -82,14 +82,14 @@ void Fl_X11_Window_Driver::flush_double_dbe(int erase_overlay)
Fl_X *i = Fl_X::i(pWindow);
if (!i->other_xid) {
i->other_xid = XdbeAllocateBackBufferName(fl_display, fl_xid(pWindow), XdbeCopied);
- i->backbuffer_bad = 1;
+ backbuffer_bad = 1;
pWindow->clear_damage(FL_DAMAGE_ALL);
}
- if (i->backbuffer_bad || erase_overlay) {
+ if (backbuffer_bad || erase_overlay) {
// Make sure we do a complete redraw...
if (i->region) {Fl_Graphics_Driver::default_driver().XDestroyRegion(i->region); i->region = 0;}
pWindow->clear_damage(FL_DAMAGE_ALL);
- i->backbuffer_bad = 0;
+ backbuffer_bad = 0;
}
// Redraw as needed...
if (pWindow->damage()) {