diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_x.cxx | 7 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Screen_Driver.cxx | 3 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/Fl_x.cxx b/src/Fl_x.cxx index 79d0a8fea..07f80cde7 100644 --- a/src/Fl_x.cxx +++ b/src/Fl_x.cxx @@ -531,7 +531,8 @@ void Fl_X11_Screen_Driver::disable_im() { } void Fl_X11_Screen_Driver::open_display_platform() { - if (fl_display) return; + static GC gc = NULL; + if (gc) return; setlocale(LC_CTYPE, ""); XSetLocaleModifiers(""); @@ -539,7 +540,7 @@ void Fl_X11_Screen_Driver::open_display_platform() { XSetIOErrorHandler(io_error_handler); XSetErrorHandler(xerror_handler); - Display *d = XOpenDisplay(0); + Display *d = (fl_display ? fl_display : XOpenDisplay(0)); if (!d) { Fl::fatal("Can't open display: %s", XDisplayName(0)); // does not return return; // silence static code analyzer @@ -547,7 +548,7 @@ void Fl_X11_Screen_Driver::open_display_platform() { open_display_i(d); // the unique GC used by all X windows - GC gc = XCreateGC(fl_display, RootWindow(fl_display, fl_screen), 0, 0); + gc = XCreateGC(fl_display, RootWindow(fl_display, fl_screen), 0, 0); Fl_Graphics_Driver::default_driver().gc(gc); fl_create_print_window(); } diff --git a/src/drivers/X11/Fl_X11_Screen_Driver.cxx b/src/drivers/X11/Fl_X11_Screen_Driver.cxx index 9e3465f13..7fc7e2b01 100644 --- a/src/drivers/X11/Fl_X11_Screen_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Screen_Driver.cxx @@ -80,6 +80,9 @@ void Fl_X11_Screen_Driver::display(const char *d) if (d) setenv("DISPLAY", d, 1); } +void fl_x11_use_display(Display *d) { + fl_display = d; +} int Fl_X11_Screen_Driver::XParseGeometry(const char* string, int* x, int* y, unsigned int* width, unsigned int* height) { |
