Created
June 18, 2022 09:41
-
-
Save dr460nf1r3/e5c52144372e0948229e96e2f1936e35 to your computer and use it in GitHub Desktop.
Wayfire-plugins-extra build fix (original source https://github.com/WayfireWM/wayfire-plugins-extra/commit/cf95ac721fb1909244d24ea5acaa5d04765696c7)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/mag.cpp b/src/mag.cpp | |
index 1ed4d73..774a9aa 100644 | |
--- a/src/mag.cpp | |
+++ b/src/mag.cpp | |
@@ -34,17 +34,6 @@ | |
#include "wayfire/render-manager.hpp" | |
#include "wayfire/opengl.hpp" | |
#include <glm/gtc/matrix_transform.hpp> | |
- | |
-extern "C" | |
-{ | |
-#define static | |
-#include <wlr/config.h> | |
-#include <wlr/render/gles2.h> | |
-#include <wlr/render/wlr_renderer.h> | |
-#include <wlr/types/wlr_matrix.h> | |
-#undef static | |
-} | |
- | |
#include <wayfire/util/log.hpp> | |
@@ -171,19 +160,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() | |
@@ -220,6 +196,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,26 +228,24 @@ 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); | |
- OpenGL::render_end(); | |
- | |
- wlr_texture_destroy(wlr_texture); | |
- wlr_dmabuf_attributes_finish(&dmabuf_attribs); | |
+ 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)); | |
mag_view->damage(); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment