diff options
| -rw-r--r-- | FL/x.H | 1 | ||||
| -rw-r--r-- | src/Fl_x.cxx | 4 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Window_Driver.H | 1 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Window_Driver.cxx | 6 |
4 files changed, 7 insertions, 5 deletions
@@ -118,7 +118,6 @@ public: Fl_Region region; Fl_X *next; char wait_for_expose; - char backbuffer_bad; // used for XDBE static Fl_X* first; static Fl_X* i(const Fl_Window* wi) {return wi->i;} void setwindow(Fl_Window* wi) {w=wi; wi->i=this;} 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()) { |
