diff --git a/src/drivers/Wayland/Fl_Wayland_Copy_Surface_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Copy_Surface_Driver.cxx index 0b84a037bb9aeab3f4d35e50495c32a92d929d06..043114781128a5fe21608cfb5108e9d273fd5f09 100644 --- a/src/drivers/Wayland/Fl_Wayland_Copy_Surface_Driver.cxx +++ b/src/drivers/Wayland/Fl_Wayland_Copy_Surface_Driver.cxx @@ -45,7 +45,8 @@ Fl_Wayland_Copy_Surface_Driver::~Fl_Wayland_Copy_Surface_Driver() { void Fl_Wayland_Copy_Surface_Driver::set_current() { Fl_Surface_Device::set_current(); - ((Fl_Wayland_Graphics_Driver*)driver())->set_cairo((cairo_t*)img_surf->offscreen()); + Fl_Cairo_Graphics_Driver *dr = (Fl_Cairo_Graphics_Driver*)driver(); + if (!dr->cr()) dr->set_cairo((cairo_t*)img_surf->offscreen()); } diff --git a/src/drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx index a3850f6da774a3c737816c0ddb9c1182573bbf61..ec9c56cb721e3d201151fa8fdf8ae81e960e98c6 100644 --- a/src/drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx +++ b/src/drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx @@ -76,7 +76,8 @@ Fl_Wayland_Image_Surface_Driver::~Fl_Wayland_Image_Surface_Driver() { void Fl_Wayland_Image_Surface_Driver::set_current() { Fl_Surface_Device::set_current(); - ((Fl_Wayland_Graphics_Driver*)fl_graphics_driver)->set_cairo((cairo_t*)offscreen); + Fl_Cairo_Graphics_Driver *dr = (Fl_Cairo_Graphics_Driver*)driver(); + if (!dr->cr()) dr->set_cairo((cairo_t*)offscreen); pre_window = Fl_Wayland_Window_Driver::wld_window; Fl_Wayland_Window_Driver::wld_window = NULL; fl_window = 0; diff --git a/src/drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx b/src/drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx index c905dbbad90f1922ccc2e5758385b8e4228444d7..f60f748f59c051c60ec193e1aba4f37da231ebc5 100644 --- a/src/drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx @@ -78,7 +78,8 @@ void Fl_Xlib_Copy_Surface_Driver::set_current() { oldwindow = fl_window; fl_window = xid->offscreen(); #if FLTK_USE_CAIRO - ((Fl_X11_Cairo_Graphics_Driver*)driver())->set_cairo(cairo_); + Fl_Cairo_Graphics_Driver *dr = (Fl_Cairo_Graphics_Driver*)driver(); + if (!dr->cr()) dr->set_cairo(cairo_); #endif } diff --git a/src/drivers/Xlib/Fl_Xlib_Image_Surface_Driver.cxx b/src/drivers/Xlib/Fl_Xlib_Image_Surface_Driver.cxx index 2660dcda741ea2ec08b4b264269e0b7a48b67e78..280ad234c9756a6ef9fbe1b750042dc932e223bf 100644 --- a/src/drivers/Xlib/Fl_Xlib_Image_Surface_Driver.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Image_Surface_Driver.cxx @@ -82,7 +82,8 @@ void Fl_Xlib_Image_Surface_Driver::set_current() { pre_window = fl_window; fl_window = offscreen; #if FLTK_USE_CAIRO - ((Fl_X11_Cairo_Graphics_Driver*)driver())->set_cairo(cairo_); + Fl_Cairo_Graphics_Driver *dr = (Fl_Cairo_Graphics_Driver*)driver(); + if (!dr->cr()) dr->set_cairo(cairo_); #endif }