diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_x.cxx | 3 | ||||
| -rw-r--r-- | src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H | 1 | ||||
| -rw-r--r-- | src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx | 12 |
3 files changed, 10 insertions, 6 deletions
diff --git a/src/Fl_x.cxx b/src/Fl_x.cxx index 6f048aee5..cb87b9ee9 100644 --- a/src/Fl_x.cxx +++ b/src/Fl_x.cxx @@ -689,6 +689,9 @@ void fl_open_display() { if (!d) Fl::fatal("Can't open display: %s",XDisplayName(0)); fl_open_display(d); + // the unique GC used by all X windows + GC gc = XCreateGC(fl_display, RootWindow(fl_display, fl_screen), 0, 0); + Fl_Display_Device::display_device()->driver()->gc(gc); } diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H index c8d12d880..ef225092d 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H @@ -42,6 +42,7 @@ public: Fl_Xlib_Graphics_Driver(void); virtual int has_feature(driver_feature mask) { return mask & NATIVE; } virtual void *gc() { return gc_; } + virtual void gc(void *value); char can_do_alpha_blending(); // --- bitmap stuff diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx index adc1c9362..83103c7e4 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx @@ -50,15 +50,15 @@ Fl_Graphics_Driver *Fl_Graphics_Driver::newMainGraphicsDriver() GC Fl_Xlib_Graphics_Driver::gc_ = NULL; Fl_Xlib_Graphics_Driver::Fl_Xlib_Graphics_Driver(void) { - if (!gc_) { - fl_open_display(); - // the unique GC used by all X windows - gc_ = XCreateGC(fl_display, RootWindow(fl_display, fl_screen), 0, 0); - fl_gc = gc_; - } mask_bitmap_ = NULL; } +void Fl_Xlib_Graphics_Driver::gc(void *value) { + gc_ = (GC)value; + fl_gc = gc_; +} + + char Fl_Xlib_Graphics_Driver::can_do_alpha_blending() { return Fl_X::xrender_supported(); } |
