wayfire: update to 0.7.1.

This commit is contained in:
travankor 2021-04-21 06:52:46 -07:00 committed by Érico Nogueira Rolim
parent 1fcb6f6676
commit 2e2158420f
2 changed files with 4 additions and 193 deletions

View file

@ -1,189 +0,0 @@
diff --git a/meson.build b/meson.build
index 4a8992cb..117f928c 100644
--- a/meson.build
+++ b/meson.build
@@ -28,7 +28,7 @@ libinput = dependency('libinput', version: '>=1.7.0')
pixman = dependency('pixman-1')
threads = dependency('threads')
xkbcommon = dependency('xkbcommon')
-wlroots = dependency('wlroots', version: ['>=0.12.0', '<0.13.0'], required: get_option('use_system_wlroots'))
+wlroots = dependency('wlroots', version: ['>=0.13.0', '<0.14.0'], required: get_option('use_system_wlroots'))
wfconfig = dependency('wf-config', version: ['>=0.7.0', '<0.8.0'], required: get_option('use_system_wfconfig'))
use_system_wlroots = not get_option('use_system_wlroots').disabled() and wlroots.found()
diff --git a/plugins/single_plugins/vswipe.cpp b/plugins/single_plugins/vswipe.cpp
index da37448c..26c8f399 100644
--- a/plugins/single_plugins/vswipe.cpp
+++ b/plugins/single_plugins/vswipe.cpp
@@ -1,3 +1,4 @@
+#include <wayfire/nonstd/wlroots-full.hpp>
#include <wayfire/plugin.hpp>
#include <wayfire/output.hpp>
#include <wayfire/core.hpp>
diff --git a/src/api/wayfire/nonstd/wlroots-full.hpp b/src/api/wayfire/nonstd/wlroots-full.hpp
index 77a12c70..4a24f1a1 100644
--- a/src/api/wayfire/nonstd/wlroots-full.hpp
+++ b/src/api/wayfire/nonstd/wlroots-full.hpp
@@ -112,6 +112,8 @@ extern "C"
#include <wlr/types/wlr_pointer_gestures_v1.h>
#include <wlr/types/wlr_idle.h>
#include <wlr/interfaces/wlr_keyboard.h>
+#include <wlr/types/wlr_touch.h>
+#include <wlr/types/wlr_pointer_gestures_v1.h>
#include <wlr/xcursor.h>
#include <wlr/types/wlr_data_control_v1.h>
#include <wlr/types/wlr_virtual_keyboard_v1.h>
diff --git a/src/api/wayfire/nonstd/wlroots.hpp b/src/api/wayfire/nonstd/wlroots.hpp
index 4686d14f..402ab3cd 100644
--- a/src/api/wayfire/nonstd/wlroots.hpp
+++ b/src/api/wayfire/nonstd/wlroots.hpp
@@ -43,7 +43,14 @@ extern "C"
struct wlr_viewporter;
#include <wlr/types/wlr_input_device.h>
+#include <wlr/types/wlr_pointer.h>
+#include <wlr/types/wlr_keyboard.h>
+#include <wlr/types/wlr_touch.h>
#include <wlr/types/wlr_output.h>
#include <wlr/types/wlr_box.h>
#include <wlr/util/edges.h>
+#include <wayland-server.h>
+
+ static constexpr uint32_t WLR_KEY_PRESSED = WL_KEYBOARD_KEY_STATE_PRESSED;
+ static constexpr uint32_t WLR_KEY_RELEASED = WL_KEYBOARD_KEY_STATE_RELEASED;
}
diff --git a/src/core/opengl.cpp b/src/core/opengl.cpp
index 09022930..aacb0800 100644
--- a/src/core/opengl.cpp
+++ b/src/core/opengl.cpp
@@ -227,25 +227,27 @@ void render_rectangle(wf::geometry_t geometry, wf::color_t color,
void render_begin()
{
- /* No real reason for 10, 10, 0 but it doesn't matter */
- render_begin(10, 10, 0);
+ if (!wlr_egl_is_current(wf::get_core_impl().egl))
+ {
+ wlr_egl_make_current(wf::get_core_impl().egl);
+ }
+
+ GL_CALL(glEnable(GL_BLEND));
+ GL_CALL(glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA));
}
void render_begin(const wf::framebuffer_base_t& fb)
{
- render_begin(fb.viewport_width, fb.viewport_height, fb.fb);
+ render_begin();
+ fb.bind();
}
-void render_begin(int32_t viewport_width, int32_t viewport_height, uint32_t fb)
+void render_begin(int32_t width, int32_t height, uint32_t fb)
{
- if (!wlr_egl_is_current(wf::get_core_impl().egl))
- {
- wlr_egl_make_current(wf::get_core_impl().egl, EGL_NO_SURFACE, NULL);
- }
+ render_begin();
- wlr_renderer_begin(wf::get_core_impl().renderer,
- viewport_width, viewport_height);
- GL_CALL(glBindFramebuffer(GL_FRAMEBUFFER, fb));
+ GL_CALL(glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fb));
+ GL_CALL(glViewport(0, 0, width, height));
}
void clear(wf::color_t col, uint32_t mask)
@@ -257,8 +259,7 @@ void clear(wf::color_t col, uint32_t mask)
void render_end()
{
GL_CALL(glBindFramebuffer(GL_FRAMEBUFFER, current_output_fb));
- wlr_renderer_scissor(wf::get_core().renderer, NULL);
- wlr_renderer_end(wf::get_core().renderer);
+ GL_CALL(glDisable(GL_SCISSOR_TEST));
}
}
diff --git a/src/core/seat/cursor.cpp b/src/core/seat/cursor.cpp
index 7ba23b06..d6006f17 100644
--- a/src/core/seat/cursor.cpp
+++ b/src/core/seat/cursor.cpp
@@ -160,7 +160,10 @@ void wf::cursor_t::set_cursor(std::string name)
name = "left_ptr";
}
- wlr_xcursor_manager_set_cursor_image(xcursor, name.c_str(), cursor);
+ idle_set_cursor.run_once([name, this] ()
+ {
+ wlr_xcursor_manager_set_cursor_image(xcursor, name.c_str(), cursor);
+ });
}
void wf::cursor_t::unhide_cursor()
@@ -175,6 +178,7 @@ void wf::cursor_t::unhide_cursor()
void wf::cursor_t::hide_cursor()
{
+ idle_set_cursor.disconnect();
wlr_cursor_set_surface(cursor, NULL, 0, 0);
this->hide_ref_counter++;
}
diff --git a/src/core/seat/cursor.hpp b/src/core/seat/cursor.hpp
index 0c4ab8fe..aec8f1aa 100644
--- a/src/core/seat/cursor.hpp
+++ b/src/core/seat/cursor.hpp
@@ -3,6 +3,7 @@
#include "seat.hpp"
#include "wayfire/plugin.hpp"
+#include "wayfire/util.hpp"
namespace wf
{
@@ -28,6 +29,13 @@ struct cursor_t
void hide_cursor();
int hide_ref_counter = 0;
+ /**
+ * Delay setting the cursor, in order to avoid setting the cursor
+ * multiple times in a single frame and to avoid setting it in the middle
+ * of the repaint loop (not allowed by wlroots).
+ */
+ wf::wl_idle_call idle_set_cursor;
+
/**
* Start/stop touchscreen mode, which means the cursor will be hidden.
* It will be shown again once a pointer or tablet event happens.
diff --git a/src/main.cpp b/src/main.cpp
index bd07d618..0c5e97e7 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -260,7 +260,7 @@ int main(int argc, char *argv[])
/** TODO: move this to core_impl constructor */
core.display = display;
core.ev_loop = wl_display_get_event_loop(core.display);
- core.backend = wlr_backend_autocreate(core.display, NULL);
+ core.backend = wlr_backend_autocreate(core.display);
core.renderer = wlr_backend_get_renderer(core.backend);
core.egl = wlr_gles2_renderer_get_egl(core.renderer);
assert(core.egl);
diff --git a/src/output/render-manager.cpp b/src/output/render-manager.cpp
index 2039333c..cb2a38bf 100644
--- a/src/output/render-manager.cpp
+++ b/src/output/render-manager.cpp
@@ -1019,8 +1019,12 @@ class wf::render_manager::impl
swap_damage |= output_damage->get_wlr_damage_box();
}
- OpenGL::render_begin(postprocessing->get_target_framebuffer());
- wlr_output_render_software_cursors(output->handle, swap_damage.to_pixman());
+ OpenGL::render_begin();
+ wlr_renderer_begin(wf::get_core().renderer,
+ output->handle->width, output->handle->height);
+ wlr_output_render_software_cursors(output->handle,
+ swap_damage.to_pixman());
+ wlr_renderer_end(wf::get_core().renderer);
OpenGL::render_end();
/* Part 4: postprocessing effects */

View file

@ -1,10 +1,11 @@
# Template file for 'wayfire'
pkgname=wayfire
version=0.7.0
revision=3
version=0.7.1
revision=1
_utils_commit=f45641beef46babdc8f1b8d18a924e72beaf8ee6
_touch_commit=b1075c54a280f913edc26b9757262f4f9d6b62b0
build_style=meson
configure_args="-Dprint_trace=false"
hostmakedepends="pkg-config wayland-devel"
makedepends="wf-config-devel wlroots-devel cairo-devel
$(vopt_if image 'libjpeg-turbo-devel libpng-devel')"
@ -16,10 +17,9 @@ homepage="https://wayfire.org"
distfiles="https://github.com/WayfireWM/wayfire/archive/v${version}.tar.gz
https://github.com/WayfireWM/wf-utils/archive/${_utils_commit}.tar.gz
https://github.com/WayfireWM/wf-touch/archive/${_touch_commit}.tar.gz"
checksum="b1a94ad2843db19e78cbd361ceebaade4507647ad893d5b5117a9fc7724ce41c
checksum="96cb7820cddbae962ca456fd1989cdaa00cd880b109bf8e9d667b9264a20c257
d172f8c21e0bac01e4116cd957fb0159c5cb39ddfdce897beb0d9c753796d5f1
2b22e03d3a522baeff5798f630ffe5aa95899fd3233b291527503af5fd3e30be"
patch_args=-Np1
# Optimization for nested STL calls
CXXFLAGS="-O3"