Fix
This commit is contained in:
parent
6ee1ec0c59
commit
8a9b75401c
@ -0,0 +1,27 @@
|
|||||||
|
From 63d8f9ceb0d2336db4276e717aabe427153b76bb Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arnaud Ferraris <arnaud.ferraris@gmail.com>
|
||||||
|
Date: Sat, 6 Jun 2020 02:24:37 +0200
|
||||||
|
Subject: [PATCH 1/2] seat: Don't notify on key release
|
||||||
|
|
||||||
|
---
|
||||||
|
src/seat.c | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/seat.c b/src/seat.c
|
||||||
|
index b04fed1..679a3f5 100644
|
||||||
|
--- a/src/seat.c
|
||||||
|
+++ b/src/seat.c
|
||||||
|
@@ -30,8 +30,9 @@ static void handle_keyboard_key(struct wl_listener *listener, void *data) {
|
||||||
|
PhocKeyboard *keyboard =
|
||||||
|
wl_container_of(listener, keyboard, keyboard_key);
|
||||||
|
PhocDesktop *desktop = server->desktop;
|
||||||
|
- wlr_idle_notify_activity(desktop->idle, keyboard->seat->seat);
|
||||||
|
struct wlr_event_keyboard_key *event = data;
|
||||||
|
+ if (event->state == WLR_KEY_PRESSED)
|
||||||
|
+ wlr_idle_notify_activity(desktop->idle, keyboard->seat->seat);
|
||||||
|
phoc_keyboard_handle_key(keyboard, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
@ -0,0 +1,112 @@
|
|||||||
|
From c6aeee2009a2ee4647fd74da0fc3bd87f61a70fd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arnaud Ferraris <arnaud.ferraris@gmail.com>
|
||||||
|
Date: Sat, 6 Jun 2020 02:52:10 +0200
|
||||||
|
Subject: [PATCH 2/2] seat: inhibit touch events when in power save mode or
|
||||||
|
blank display
|
||||||
|
|
||||||
|
---
|
||||||
|
src/desktop.c | 2 ++
|
||||||
|
src/output.c | 3 +++
|
||||||
|
src/seat.c | 6 ++++++
|
||||||
|
src/server.c | 1 +
|
||||||
|
src/server.h | 1 +
|
||||||
|
5 files changed, 13 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/desktop.c b/src/desktop.c
|
||||||
|
index 8fbb98e..40b2492 100644
|
||||||
|
--- a/src/desktop.c
|
||||||
|
+++ b/src/desktop.c
|
||||||
|
@@ -703,6 +703,7 @@ phoc_desktop_new (struct roots_config *c
|
||||||
|
void
|
||||||
|
phoc_desktop_toggle_output_blank (PhocDesktop *self)
|
||||||
|
{
|
||||||
|
+ PhocServer *server = phoc_server_get_default ();
|
||||||
|
PhocOutput *output;
|
||||||
|
|
||||||
|
wl_list_for_each(output, &self->outputs, link) {
|
||||||
|
@@ -710,6 +711,7 @@ phoc_desktop_toggle_output_blank (PhocDe
|
||||||
|
|
||||||
|
wlr_output_enable (output->wlr_output, enable);
|
||||||
|
wlr_output_commit (output->wlr_output);
|
||||||
|
+ server->active = enable;
|
||||||
|
if (enable)
|
||||||
|
phoc_output_damage_whole(output);
|
||||||
|
}
|
||||||
|
diff --git a/src/output.c b/src/output.c
|
||||||
|
index c03889f..045cbc0 100644
|
||||||
|
--- a/src/output.c
|
||||||
|
+++ b/src/output.c
|
||||||
|
@@ -928,6 +928,7 @@ handle_output_manager_test (struct wl_li
|
||||||
|
void
|
||||||
|
phoc_output_handle_output_power_manager_set_mode (struct wl_listener *listener, void *data)
|
||||||
|
{
|
||||||
|
+ PhocServer *server = phoc_server_get_default ();
|
||||||
|
struct wlr_output_power_v1_set_mode_event *event = data;
|
||||||
|
PhocOutput *self;
|
||||||
|
bool enable = true;
|
||||||
|
@@ -951,6 +952,8 @@ phoc_output_handle_output_power_manager_
|
||||||
|
if (enable == self->wlr_output->enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
+ server->active = enable;
|
||||||
|
+
|
||||||
|
wlr_output_enable (self->wlr_output, enable);
|
||||||
|
if (!wlr_output_commit (self->wlr_output)) {
|
||||||
|
g_warning ("Failed to commit power mode change to %d for %p", enable, self);
|
||||||
|
diff --git a/src/seat.c b/src/seat.c
|
||||||
|
index 679a3f5..2a4c007 100644
|
||||||
|
--- a/src/seat.c
|
||||||
|
+++ b/src/seat.c
|
||||||
|
@@ -178,6 +178,8 @@ static void handle_touch_down(struct wl_listener *listener, void *data) {
|
||||||
|
struct roots_cursor *cursor =
|
||||||
|
wl_container_of(listener, cursor, touch_down);
|
||||||
|
PhocDesktop *desktop = server->desktop;
|
||||||
|
+ if (!server->active)
|
||||||
|
+ return;
|
||||||
|
wlr_idle_notify_activity(desktop->idle, cursor->seat->seat);
|
||||||
|
struct wlr_event_touch_down *event = data;
|
||||||
|
roots_cursor_handle_touch_down(cursor, event);
|
||||||
|
@@ -188,6 +190,8 @@ static void handle_touch_up(struct wl_listener *listener, void *data) {
|
||||||
|
struct roots_cursor *cursor =
|
||||||
|
wl_container_of(listener, cursor, touch_up);
|
||||||
|
PhocDesktop *desktop = server->desktop;
|
||||||
|
+ if (!server->active)
|
||||||
|
+ return;
|
||||||
|
wlr_idle_notify_activity(desktop->idle, cursor->seat->seat);
|
||||||
|
struct wlr_event_touch_up *event = data;
|
||||||
|
roots_cursor_handle_touch_up(cursor, event);
|
||||||
|
@@ -198,6 +202,8 @@ static void handle_touch_motion(struct wl_listener *listener, void *data) {
|
||||||
|
struct roots_cursor *cursor =
|
||||||
|
wl_container_of(listener, cursor, touch_motion);
|
||||||
|
PhocDesktop *desktop = server->desktop;
|
||||||
|
+ if (!server->active)
|
||||||
|
+ return;
|
||||||
|
wlr_idle_notify_activity(desktop->idle, cursor->seat->seat);
|
||||||
|
struct wlr_event_touch_motion *event = data;
|
||||||
|
roots_cursor_handle_touch_motion(cursor, event);
|
||||||
|
diff --git a/src/server.c b/src/server.c
|
||||||
|
index 838841b..41452cf 100644
|
||||||
|
--- a/src/server.c
|
||||||
|
+++ b/src/server.c
|
||||||
|
@@ -276,6 +276,7 @@ phoc_server_setup (PhocServer *self, const char *config_path,
|
||||||
|
phoc_startup_session (self);
|
||||||
|
|
||||||
|
self->inited = TRUE;
|
||||||
|
+ self->active = TRUE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/server.h b/src/server.h
|
||||||
|
index 9501432..532b064 100644
|
||||||
|
--- a/src/server.h
|
||||||
|
+++ b/src/server.h
|
||||||
|
@@ -37,6 +37,7 @@ struct _PhocServer {
|
||||||
|
PhocInput *input;
|
||||||
|
PhocServerDebugFlags debug_flags;
|
||||||
|
gboolean inited;
|
||||||
|
+ gboolean active;
|
||||||
|
|
||||||
|
/* The session */
|
||||||
|
gchar *session;
|
||||||
|
--
|
||||||
|
2.26.2
|
@ -7,6 +7,9 @@ inherit meson vala xdg
|
|||||||
|
|
||||||
MY_PV="v${PV}"
|
MY_PV="v${PV}"
|
||||||
MY_P="${PN}-${MY_PV}"
|
MY_P="${PN}-${MY_PV}"
|
||||||
|
# 0.13.0 does not work atm
|
||||||
|
WL_PV="0.10.1"
|
||||||
|
WL_P="wlroots-${WL_PV}"
|
||||||
|
|
||||||
DESCRIPTION="Wlroots based Phone compositor"
|
DESCRIPTION="Wlroots based Phone compositor"
|
||||||
HOMEPAGE="https://gitlab.gnome.org/World/Phosh/phoc"
|
HOMEPAGE="https://gitlab.gnome.org/World/Phosh/phoc"
|
||||||
@ -14,9 +17,11 @@ HOMEPAGE="https://gitlab.gnome.org/World/Phosh/phoc"
|
|||||||
# we don't use the version on gentoo because it breaks
|
# we don't use the version on gentoo because it breaks
|
||||||
# the phoc installation. we follow method used in archlinuxarm
|
# the phoc installation. we follow method used in archlinuxarm
|
||||||
SRC_URI="
|
SRC_URI="
|
||||||
https://gitlab.gnome.org/World/Phosh/phoc/-/archive/${MY_PV}/${MY_P}.tar.gz
|
https://source.puri.sm/Librem5/phoc/-/archive/${MY_PV}/${MY_P}.tar.gz
|
||||||
|
https://github.com/swaywm/wlroots/releases/download/${WL_PV}/${WL_P}.tar.gz
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|
||||||
LICENSE="GPL-3"
|
LICENSE="GPL-3"
|
||||||
SLOT="0"
|
SLOT="0"
|
||||||
KEYWORDS="~amd64 ~arm64"
|
KEYWORDS="~amd64 ~arm64"
|
||||||
@ -40,7 +45,7 @@ RDEPEND="
|
|||||||
x11-libs/xcb-util-wm
|
x11-libs/xcb-util-wm
|
||||||
x11-wm/mutter
|
x11-wm/mutter
|
||||||
gnome-base/gsettings-desktop-schemas
|
gnome-base/gsettings-desktop-schemas
|
||||||
=gui-libs/wlroots-0.10.0
|
#=gui-libs/wlroots-0.10.0
|
||||||
"
|
"
|
||||||
|
|
||||||
BDEPEND="
|
BDEPEND="
|
||||||
@ -49,19 +54,25 @@ BDEPEND="
|
|||||||
virtual/pkgconfig
|
virtual/pkgconfig
|
||||||
x11-base/xorg-server
|
x11-base/xorg-server
|
||||||
"
|
"
|
||||||
|
PATCHES=(
|
||||||
|
"${FILESDIR}/0001-seat-Don-t-notify-on-key-release.patch"
|
||||||
|
"${FILESDIR}/0002-seat-inhibit-touch-events-when-in-power-save-mode-or.patch"
|
||||||
|
)
|
||||||
|
|
||||||
S="${WORKDIR}/${MY_P}"
|
S="${WORKDIR}/${MY_P}"
|
||||||
|
|
||||||
src_prepare() {
|
src_prepare() {
|
||||||
default
|
default
|
||||||
rm -r "${S}"/subprojects/wlroots || die "Failed to remove bundled wlroots"
|
rm -r "${S}"/subprojects/wlroots || die "Failed to remove bundled wlroots"
|
||||||
|
cp -r "${WORKDIR}/${WL_P}" "${S}"/subprojects/wlroots || die "Failed to copy right version of wlroots"
|
||||||
}
|
}
|
||||||
|
|
||||||
src_configure() {
|
src_configure() {
|
||||||
local emesonargs=(
|
local emesonargs=(
|
||||||
-Ddefault_library=shared
|
-Ddefault_library=shared
|
||||||
-Dtests=false
|
-Dtests=false
|
||||||
-Dembed-wlroots=disabled
|
-Dwlroots:logind-provider=systemd
|
||||||
|
-Dwlroots:libseat=disabled
|
||||||
)
|
)
|
||||||
meson_src_configure
|
meson_src_configure
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user