diff --git a/srcpkgs/wayfire-plugins-extra/patches/mag.patch b/srcpkgs/wayfire-plugins-extra/patches/mag.patch new file mode 100644 index 00000000000..0cb71ad5d86 --- /dev/null +++ b/srcpkgs/wayfire-plugins-extra/patches/mag.patch @@ -0,0 +1,99 @@ +diff --git a/src/mag.cpp b/src/mag.cpp +index 1ed4d73..f03cf7c 100644 +--- a/src/mag.cpp ++++ b/src/mag.cpp +@@ -35,16 +35,6 @@ + #include "wayfire/opengl.hpp" + #include + +-extern "C" +-{ +-#define static +-#include +-#include +-#include +-#include +-#undef static +-} +- + #include + + +@@ -171,19 +161,6 @@ class wayfire_magnifier : public wf::plugin_interface_t + + wf::effect_hook_t post_hook = [=] () + { +- wlr_dmabuf_attributes dmabuf_attribs; +- +- /* This plugin only works if this function succeeds. It will not +- * work with the x11 backend but works with drm, for example. */ +- if (!wlr_output_export_dmabuf(output->handle, &dmabuf_attribs)) +- { +- LOGE("Failed reading output contents"); +- deactivate(); +- active = false; +- +- return; +- } +- + auto cursor_position = output->get_cursor_position(); + + auto ortho = output->render->get_target_framebuffer() +@@ -201,9 +178,6 @@ class wayfire_magnifier : public wf::plugin_interface_t + float y = cursor.y; + + auto og = output->get_relative_geometry(); +- gl_geometry src_geometry = {0, 0, (float)og.width, (float)og.height}; +- auto transform = output->render->get_target_framebuffer().transform; +- transform = glm::inverse(transform); + + width = og.width; + height = og.height; +@@ -220,6 +194,9 @@ class wayfire_magnifier : public wf::plugin_interface_t + /* Compute zoom_box, forcing the zoom to stay on the output */ + gl_geometry zoom_box; + ++ /* Y-invert */ ++ y = 1.0 - y; ++ + zoom_box.x1 = x - level; + zoom_box.y1 = y - level; + zoom_box.x2 = x + level; +@@ -249,27 +226,25 @@ class wayfire_magnifier : public wf::plugin_interface_t + zoom_box.y2 = 1.0; + } + ++ zoom_box.x1 *= width - 1; ++ zoom_box.x2 *= width - 1; ++ zoom_box.y1 *= height - 1; ++ zoom_box.y2 *= height - 1; ++ + /* Copy zoom_box part of the output to our own texture to be + * read by the mag_view_t. */ +- auto wlr_texture = wlr_texture_from_dmabuf( +- wf::get_core().renderer, &dmabuf_attribs); +- +- wf::texture_t texture{wlr_texture}; + + OpenGL::render_begin(); + mag_view->mag_tex.allocate(width, height); + mag_view->mag_tex.geometry = og; + mag_view->mag_tex.bind(); +- +- OpenGL::render_transformed_texture(texture, src_geometry, zoom_box, +- transform * mag_view->mag_tex.get_orthographic_projection(), +- glm::vec4(1.0), +- OpenGL::TEXTURE_USE_TEX_GEOMETRY); ++ GL_CALL(glBindFramebuffer(GL_READ_FRAMEBUFFER, ++ output->render->get_target_framebuffer().fb)); ++ GL_CALL(glBlitFramebuffer(zoom_box.x1, zoom_box.y2, zoom_box.x2, zoom_box.y1, ++ 0, 0, width, height, ++ GL_COLOR_BUFFER_BIT, GL_LINEAR)); + OpenGL::render_end(); + +- wlr_texture_destroy(wlr_texture); +- wlr_dmabuf_attributes_finish(&dmabuf_attribs); +- + mag_view->damage(); + }; + diff --git a/srcpkgs/wayfire-plugins-extra/template b/srcpkgs/wayfire-plugins-extra/template index 79b40857cf0..a666281e177 100644 --- a/srcpkgs/wayfire-plugins-extra/template +++ b/srcpkgs/wayfire-plugins-extra/template @@ -1,7 +1,7 @@ # Template file for 'wayfire-plugins-extra' pkgname=wayfire-plugins-extra version=0.7.0 -revision=5 +revision=6 build_style=meson hostmakedepends="pkg-config wayland-devel" makedepends="wayfire-devel glibmm-devel"