Add static Fl_Wayland_Window_Driver::gl_plugin() member function.
This commit is contained in:
parent
7deff86b5d
commit
d5a1e7feb9
@ -1115,8 +1115,7 @@ void Fl_Wayland_Screen_Driver::open_display_platform() {
|
||||
}
|
||||
|
||||
void Fl_Wayland_Screen_Driver::close_display() {
|
||||
Fl_Plugin_Manager pm("wayland.fltk.org");
|
||||
Fl_Wayland_Plugin *plugin = (Fl_Wayland_Plugin*)pm.plugin("gl.wayland.fltk.org");
|
||||
Fl_Wayland_Plugin *plugin = Fl_Wayland_Window_Driver::gl_plugin();
|
||||
if (plugin) plugin->terminate();
|
||||
|
||||
Fl::remove_fd(wl_display_get_fd(Fl_Wayland_Screen_Driver::wl_display));
|
||||
|
||||
@ -41,12 +41,14 @@
|
||||
*/
|
||||
|
||||
typedef struct _cairo_pattern cairo_pattern_t;
|
||||
class Fl_Wayland_Plugin;
|
||||
|
||||
|
||||
class Fl_Wayland_Window_Driver : public Fl_Window_Driver
|
||||
{
|
||||
friend class Fl_X;
|
||||
friend class Fl_Wayland_Gl_Window_Driver;
|
||||
friend class Fl_Wayland_Screen_Driver;
|
||||
private:
|
||||
struct shape_data_type {
|
||||
int lw_; ///< width of shape image
|
||||
@ -55,6 +57,7 @@ private:
|
||||
cairo_pattern_t *mask_pattern_;
|
||||
} *shape_data_;
|
||||
static bool in_flush; // useful for progressive window drawing
|
||||
static Fl_Wayland_Plugin *gl_plugin();
|
||||
struct wl_cursor *cursor_;
|
||||
void delete_cursor_();
|
||||
struct gl_start_support *gl_start_support_; // for support of gl_start/gl_finish
|
||||
|
||||
@ -98,14 +98,7 @@ Fl_Wayland_Window_Driver::~Fl_Wayland_Window_Driver()
|
||||
}
|
||||
delete_cursor_();
|
||||
if (gl_start_support_) { // occurs only if gl_start/gl_finish was used
|
||||
static Fl_Wayland_Plugin *plugin = NULL;
|
||||
if (!plugin) {
|
||||
Fl_Plugin_Manager pm("wayland.fltk.org");
|
||||
plugin = (Fl_Wayland_Plugin*)pm.plugin("gl.wayland.fltk.org");
|
||||
}
|
||||
if (plugin) {
|
||||
plugin->destroy(gl_start_support_);
|
||||
}
|
||||
gl_plugin()->destroy(gl_start_support_);
|
||||
}
|
||||
}
|
||||
|
||||
@ -388,15 +381,8 @@ void Fl_Wayland_Window_Driver::flush() {
|
||||
Fl_Wayland_Window_Driver::in_flush = true;
|
||||
Fl_Window_Driver::flush();
|
||||
Fl_Wayland_Window_Driver::in_flush = false;
|
||||
static Fl_Wayland_Plugin *plugin = NULL;
|
||||
if (!plugin) {
|
||||
Fl_Plugin_Manager pm("wayland.fltk.org");
|
||||
plugin = (Fl_Wayland_Plugin*)pm.plugin("gl.wayland.fltk.org");
|
||||
}
|
||||
if (plugin) {
|
||||
plugin->do_swap(pWindow); // useful only for GL win with overlay
|
||||
if (scale != fl_graphics_driver->scale() || W != pWindow->w() || H != pWindow->h()) plugin->invalidate(pWindow);
|
||||
}
|
||||
gl_plugin()->do_swap(pWindow); // useful only for GL win with overlay
|
||||
if (scale != fl_graphics_driver->scale() || W != pWindow->w() || H != pWindow->h()) gl_plugin()->invalidate(pWindow);
|
||||
return;
|
||||
}
|
||||
struct wld_window *window = fl_xid(pWindow);
|
||||
@ -1531,3 +1517,13 @@ cairo_t *fl_wl_cairo() {
|
||||
struct wl_display *fl_wl_display() {
|
||||
return Fl_Wayland_Screen_Driver::wl_display;
|
||||
}
|
||||
|
||||
|
||||
Fl_Wayland_Plugin *Fl_Wayland_Window_Driver::gl_plugin() {
|
||||
static Fl_Wayland_Plugin *plugin = NULL;
|
||||
if (!plugin) {
|
||||
Fl_Plugin_Manager pm("wayland.fltk.org");
|
||||
plugin = (Fl_Wayland_Plugin*)pm.plugin("gl.wayland.fltk.org");
|
||||
}
|
||||
return plugin;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user