summaryrefslogtreecommitdiff
path: root/src/drivers/Wayland
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2025-01-08 14:37:57 +0100
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2025-01-08 14:37:57 +0100
commitc0c2cf7d408fc6bfefd9eecbfe5aabcbc4d55ff3 (patch)
tree2d84ced5a6069a7841afebfb277fbcbe0d743561 /src/drivers/Wayland
parentca786597f773eb6f064fcb98a1e9437d2cfe8ac4 (diff)
Make draw to image and draw to clipboard behave equally in X11 and Wayland
Diffstat (limited to 'src/drivers/Wayland')
-rw-r--r--src/drivers/Wayland/Fl_Wayland_Copy_Surface_Driver.cxx13
-rw-r--r--src/drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx8
2 files changed, 9 insertions, 12 deletions
diff --git a/src/drivers/Wayland/Fl_Wayland_Copy_Surface_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Copy_Surface_Driver.cxx
index 90ca9ac27..0b84a037b 100644
--- a/src/drivers/Wayland/Fl_Wayland_Copy_Surface_Driver.cxx
+++ b/src/drivers/Wayland/Fl_Wayland_Copy_Surface_Driver.cxx
@@ -22,15 +22,14 @@
Fl_Wayland_Copy_Surface_Driver::Fl_Wayland_Copy_Surface_Driver(int w, int h) : Fl_Copy_Surface_Driver(w, h) {
- struct Fl_Wayland_Window_Driver::surface_output *s_output = NULL;
- if (Fl_Wayland_Window_Driver::wld_window &&
- !wl_list_empty(&Fl_Wayland_Window_Driver::wld_window->outputs)) {
- s_output = wl_container_of(Fl_Wayland_Window_Driver::wld_window->outputs.next, s_output, link);
+ float os_scale = Fl_Graphics_Driver::default_driver().scale();
+ int d = 1;
+ if (Fl::first_window()) {
+ d = Fl_Wayland_Window_Driver::driver(Fl::first_window())->wld_scale();
}
- int os_scale = (s_output ? s_output->output->wld_scale : 1);
- img_surf = new Fl_Image_Surface(w * os_scale, h * os_scale);
+ img_surf = new Fl_Image_Surface(int(w * os_scale) * d, int(h * os_scale) * d);
driver(img_surf->driver());
- driver()->scale(os_scale);
+ driver()->scale(d * os_scale);
}
diff --git a/src/drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx
index de72e175a..a3850f6da 100644
--- a/src/drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx
+++ b/src/drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx
@@ -27,12 +27,10 @@ Fl_Wayland_Image_Surface_Driver::Fl_Wayland_Image_Surface_Driver(int w, int h,
int d = 1;
if (!off) {
fl_open_display();
- if (Fl_Wayland_Window_Driver::wld_window) {
- d = Fl_Wayland_Window_Driver::driver(
- Fl_Wayland_Window_Driver::wld_window->fl_win
- )->wld_scale();
+ if (Fl::first_window()) {
+ d = Fl_Wayland_Window_Driver::driver(Fl::first_window())->wld_scale();
}
- s = fl_graphics_driver->scale();
+ s = Fl_Graphics_Driver::default_driver().scale();
if (d*s != 1 && high_res) {
w = int(w * s) * d;
h = int(h * s) * d;