summaryrefslogtreecommitdiff
path: root/src/drivers/X11
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2021-11-26 15:01:36 +0100
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2021-11-26 15:01:54 +0100
commit84cf24948245d893cde9b3ef8c9eee614191de80 (patch)
tree1d9a4b8c520c0f02481e7c7f75b1c118bb137bda /src/drivers/X11
parent2b400f6abcbd26377b298deb5ee6f7d0166cdfd6 (diff)
Fix for issue #253: Remove xdbe support
Diffstat (limited to 'src/drivers/X11')
-rw-r--r--src/drivers/X11/Fl_X11_Screen_Driver.cxx23
-rw-r--r--src/drivers/X11/Fl_X11_Window_Driver.H6
-rw-r--r--src/drivers/X11/Fl_X11_Window_Driver.cxx75
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();