diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2021-11-26 15:01:36 +0100 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2021-11-26 15:01:54 +0100 |
| commit | 84cf24948245d893cde9b3ef8c9eee614191de80 (patch) | |
| tree | 1d9a4b8c520c0f02481e7c7f75b1c118bb137bda /src/drivers/X11 | |
| parent | 2b400f6abcbd26377b298deb5ee6f7d0166cdfd6 (diff) | |
Fix for issue #253: Remove xdbe support
Diffstat (limited to 'src/drivers/X11')
| -rw-r--r-- | src/drivers/X11/Fl_X11_Screen_Driver.cxx | 23 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Window_Driver.H | 6 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Window_Driver.cxx | 75 |
3 files changed, 3 insertions, 101 deletions
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 <X11/extensions/Xinerama.h> #endif -#if USE_XDBE -#include <X11/extensions/Xdbe.h> -#endif - # include <X11/Xutil.h> # ifdef __sgi # include <X11/extensions/readdisplay.h> @@ -146,32 +142,13 @@ static int test_visual(XVisualInfo& v, int flags) { // 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; } 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 <config.h> // for USE_XDBE +#include <config.h> #include <FL/platform.H> // 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 <X11/extensions/Xdbe.h> - -// 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(); |
