From 84cf24948245d893cde9b3ef8c9eee614191de80 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Fri, 26 Nov 2021 15:01:36 +0100 Subject: Fix for issue #253: Remove xdbe support --- src/drivers/X11/Fl_X11_Screen_Driver.cxx | 23 ---------- src/drivers/X11/Fl_X11_Window_Driver.H | 6 +-- src/drivers/X11/Fl_X11_Window_Driver.cxx | 75 +------------------------------- 3 files changed, 3 insertions(+), 101 deletions(-) (limited to 'src/drivers/X11') diff --git a/src/drivers/X11/Fl_X11_Screen_Driver.cxx b/src/drivers/X11/Fl_X11_Screen_Driver.cxx index 4fd36edb6..ed8c54dfa 100644 --- a/src/drivers/X11/Fl_X11_Screen_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Screen_Driver.cxx @@ -35,10 +35,6 @@ # include #endif -#if USE_XDBE -#include -#endif - # include # ifdef __sgi # include @@ -145,23 +141,6 @@ static int test_visual(XVisualInfo& v, int flags) { #else // simpler if we can't use colormapped visuals at all: if (v.c_class != StaticColor && v.c_class != TrueColor) return 0; -#endif -#if USE_XDBE - if (flags & FL_DOUBLE) { - static XdbeScreenVisualInfo *xdbejunk; - if (!xdbejunk) { - int event_base, error_base; - if (!XdbeQueryExtension(fl_display, &event_base, &error_base)) return 0; - Drawable root = RootWindow(fl_display,fl_screen); - int numscreens = 1; - xdbejunk = XdbeGetVisualInfo(fl_display,&root,&numscreens); - if (!xdbejunk) return 0; - } - for (int j = 0; ; j++) { - if (j >= xdbejunk->count) return 0; - if (xdbejunk->visinfo[j].visual == v.visualid) break; - } - } #endif return 1; } @@ -169,9 +148,7 @@ static int test_visual(XVisualInfo& v, int flags) { int Fl_X11_Screen_Driver::visual(int flags) { -#if USE_XDBE == 0 if (flags & FL_DOUBLE) return 0; -#endif open_display(); // always use default if possible: if (test_visual(*fl_visual, flags)) return 1; diff --git a/src/drivers/X11/Fl_X11_Window_Driver.H b/src/drivers/X11/Fl_X11_Window_Driver.H index 098808c72..08e7514bd 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.H +++ b/src/drivers/X11/Fl_X11_Window_Driver.H @@ -24,7 +24,7 @@ #define FL_X11_WINDOW_DRIVER_H #include "../../Fl_Window_Driver.H" -#include // for USE_XDBE +#include #include // for Cursor class Fl_Bitmap; @@ -80,10 +80,6 @@ private: void flush_double(int erase_overlay); void sendxjunk(); void activate_window(); -#ifdef USE_XDBE - char backbuffer_bad; - void flush_double_dbe(int erase_overlay); -#endif public: Fl_X11_Window_Driver(Fl_Window*); diff --git a/src/drivers/X11/Fl_X11_Window_Driver.cxx b/src/drivers/X11/Fl_X11_Window_Driver.cxx index 5dea0fb29..b0db15194 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Window_Driver.cxx @@ -44,74 +44,9 @@ extern unsigned long fl_transparent_pixel; Window fl_window; -#if USE_XDBE -#include - -// whether the Xdbe extension is usable. -// DO NOT call this if the window is not mapped, because we do not want fluid to open the display. -static int can_xdbe() -{ - static int tried = 0; - static int use_xdbe = 0; - if (!tried) { - tried = 1; - int event_base, error_base; - if (!XdbeQueryExtension(fl_display, &event_base, &error_base)) return 0; - Drawable root = RootWindow(fl_display,fl_screen); - int numscreens = 1; - XdbeScreenVisualInfo *a = XdbeGetVisualInfo(fl_display,&root,&numscreens); - if (!a) return 0; - for (int j = 0; j < a->count; j++) { - if (a->visinfo[j].visual == fl_visual->visualid) { - use_xdbe = 1; break; - } - } - XdbeFreeVisualInfo(a); - } - return use_xdbe; -} - - -void Fl_X11_Window_Driver::flush_double_dbe(int erase_overlay) -{ - pWindow->make_current(); // make sure fl_gc is non-zero - Fl_X *i = Fl_X::i(pWindow); - if (!other_xid) { - other_xid = XdbeAllocateBackBufferName(fl_display, fl_xid(pWindow), XdbeCopied); - backbuffer_bad = 1; - pWindow->clear_damage(FL_DAMAGE_ALL); - } - 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); - backbuffer_bad = 0; - } - // Redraw as needed... - if (pWindow->damage()) { - fl_clip_region(i->region); i->region = 0; - fl_window = other_xid; - draw(); - fl_window = i->xid; - } - // Copy contents of back buffer to window... - XdbeSwapInfo s; - s.swap_window = fl_xid(pWindow); - s.swap_action = XdbeCopied; - XdbeSwapBuffers(fl_display, &s, 1); -} - -#endif // USE_XDBE - void Fl_X11_Window_Driver::destroy_double_buffer() { -#if USE_XDBE - if (can_xdbe()) { - XdbeDeallocateBackBufferName(fl_display, other_xid); - } - else -#endif // USE_XDBE - fl_delete_offscreen(other_xid); + fl_delete_offscreen(other_xid); other_xid = 0; } @@ -219,10 +154,7 @@ void Fl_X11_Window_Driver::draw_begin() void Fl_X11_Window_Driver::flush_double() { if (!shown()) return; -#if USE_XDBE - if (can_xdbe()) flush_double_dbe(0); else -#endif - flush_double(0); + flush_double(0); } void Fl_X11_Window_Driver::flush_double(int erase_overlay) @@ -251,9 +183,6 @@ void Fl_X11_Window_Driver::flush_overlay() if (!shown()) return; int erase_overlay = (pWindow->damage()&FL_DAMAGE_OVERLAY) | (overlay() == pWindow); pWindow->clear_damage((uchar)(pWindow->damage()&~FL_DAMAGE_OVERLAY)); -#if USE_XDBE - if (can_xdbe()) flush_double_dbe(erase_overlay); else -#endif flush_double(erase_overlay); Fl_Overlay_Window *oWindow = pWindow->as_overlay_window(); if (overlay() == oWindow) oWindow->draw_overlay(); -- cgit v1.2.3