| Message ID | 20241122100810.3460864-1-pratheeksha.s.n@ni.com |
|---|---|
| State | Under Review |
| Headers | show |
| Series | [meta-gnome] Onboard: Add onboard virtual keyboard | expand |
On Fri, Nov 22, 2024 at 2:08 AM pratheekshasn via lists.openembedded.org <pratheeksha.s.n=ni.com@lists.openembedded.org> wrote: > > Signed-off by: Pratheeksha S N <pratheeksha.s.n@ni.com> > --- > ...ine-error-API-if-platform-does-not-h.patch | 67 +++++++++++++++++++ > .../0002-onboard-onhover-seg-fault-fix.patch | 52 ++++++++++++++ > .../recipes-support/onboard/onboard_1.4.1.bb | 36 ++++++++++ > 3 files changed, 155 insertions(+) > create mode 100644 meta-gnome/recipes-support/onboard/onboard/0001-pypredict-lm-Define-error-API-if-platform-does-not-h.patch > create mode 100644 meta-gnome/recipes-support/onboard/onboard/0002-onboard-onhover-seg-fault-fix.patch > create mode 100644 meta-gnome/recipes-support/onboard/onboard_1.4.1.bb > > diff --git a/meta-gnome/recipes-support/onboard/onboard/0001-pypredict-lm-Define-error-API-if-platform-does-not-h.patch b/meta-gnome/recipes-support/onboard/onboard/0001-pypredict-lm-Define-error-API-if-platform-does-not-h.patch > new file mode 100644 > index 000000000..fda37895c > --- /dev/null > +++ b/meta-gnome/recipes-support/onboard/onboard/0001-pypredict-lm-Define-error-API-if-platform-does-not-h.patch > @@ -0,0 +1,67 @@ > +From 1c95f64aa342147387ce4b1b7269a5c8b34bd898 Mon Sep 17 00:00:00 2001 > +From: Khem Raj <raj.khem@gmail.com> > +Date: Thu, 13 Jul 2017 09:01:04 -0700 > +Subject: [PATCH] pypredict/lm: Define error API if platform does not have it > + > +error() API is not implemented across all libcs on linux > +e.g. musl does not provide it. > + > +Signed-off-by: Khem Raj <raj.khem@gmail.com> > +--- > + Onboard/pypredict/lm/lm.cpp | 1 - > + Onboard/pypredict/lm/lm.h | 13 +++++++++++++ > + Onboard/pypredict/lm/lm_dynamic.cpp | 2 -- > + 3 files changed, 13 insertions(+), 3 deletions(-) > + > +diff --git a/Onboard/pypredict/lm/lm.cpp b/Onboard/pypredict/lm/lm.cpp > +index 2e64296..37ae241 100644 > +--- a/Onboard/pypredict/lm/lm.cpp > ++++ b/Onboard/pypredict/lm/lm.cpp > +@@ -19,7 +19,6 @@ > + > + #include <stdlib.h> > + #include <stdio.h> > +-#include <error.h> > + #include <algorithm> > + #include <cmath> > + #include <string> > +diff --git a/Onboard/pypredict/lm/lm.h b/Onboard/pypredict/lm/lm.h > +index ed4164a..b8b63ee 100644 > +--- a/Onboard/pypredict/lm/lm.h > ++++ b/Onboard/pypredict/lm/lm.h > +@@ -32,6 +32,19 @@ > + #include <algorithm> > + #include <string> > + > ++#if defined(HAVE_ERROR_H) > ++#include <error.h> > ++#else > ++#include <err.h> > ++#define _onboard_error(S, E, F, ...) do { \ > ++ if (E) \ > ++ err(S, F ": %s", ##__VA_ARGS__, strerror(E)); \ > ++ else \ > ++ err(S, F, ##__VA_ARGS__); \ > ++} while(0) > ++ > ++#define error _onboard_error > ++#endif > + > + // break into debugger > + // step twice to come back out of the raise() call into known code > +diff --git a/Onboard/pypredict/lm/lm_dynamic.cpp b/Onboard/pypredict/lm/lm_dynamic.cpp > +index 7c62824..e7c7f40 100644 > +--- a/Onboard/pypredict/lm/lm_dynamic.cpp > ++++ b/Onboard/pypredict/lm/lm_dynamic.cpp > +@@ -17,8 +17,6 @@ > + * along with this program. If not, see <http://www.gnu.org/licenses/>. > + */ > + > +-#include <error.h> > +- > + #include "lm_dynamic.h" > + > + using namespace std; > +-- > +2.13.2 > + > diff --git a/meta-gnome/recipes-support/onboard/onboard/0002-onboard-onhover-seg-fault-fix.patch b/meta-gnome/recipes-support/onboard/onboard/0002-onboard-onhover-seg-fault-fix.patch > new file mode 100644 > index 000000000..1ec195cb8 > --- /dev/null > +++ b/meta-gnome/recipes-support/onboard/onboard/0002-onboard-onhover-seg-fault-fix.patch > @@ -0,0 +1,52 @@ > +From: 1be95325d320122efd5dedf7437839cfcca01f7a > +From: https://github.com/void-linux/void-packages/commit/1be95325d320122efd5dedf7437839cfcca01f7a > +Date: Mon, 23 Sep 2024 > +Subject: [PATCH] onboard: fix segfault when hovering over the keyboard > + > +Currently, if the mouse pointer is hovered over the Onboard keyboard, the application crashes with a segmentation fault. > +This is because the new_device_event function is not acquiring the GIL before creating a new object. This patch fixes > +the issue by acquiring the GIL before creating a new object. It also acquires the GIL before queueing the event. > +This patch is taken from the fix provided in the following link: > +https://github.com/void-linux/void-packages/commit/1be95325d320122efd5dedf7437839cfcca01f7a > + > +Signed-off by: Pratheeksha S N <pratheeksha.s.n@ni.com> > + > +Upstream-Status: Inactive-Upstream [lastcommit: 2017-10-09] > + > +--- a/Onboard/osk/osk_devices.c > ++++ b/Onboard/osk/osk_devices.c > +@@ -97,13 +97,15 @@ osk_device_event_dealloc (OskDeviceEvent > + static OskDeviceEvent* > + new_device_event (void) > + { > +- OskDeviceEvent *ev = PyObject_New(OskDeviceEvent, &osk_device_event_type); > ++ OskDeviceEvent *ev; > ++ PyGILState_STATE gstate = PyGILState_Ensure(); > ++ ev = PyObject_New(OskDeviceEvent, &osk_device_event_type); > + if (ev) > + { > + osk_device_event_type.tp_init((PyObject*) ev, NULL, NULL); > +- return ev; > + } > +- return NULL; > ++ PyGILState_Release(gstate); > ++ return ev; > + } > + > + static PyObject * > +@@ -334,6 +336,7 @@ osk_devices_dealloc (OskDevices *dev) > + static void > + queue_event (OskDevices* dev, OskDeviceEvent* event, Bool discard_pending) > + { > ++ PyGILState_STATE state = PyGILState_Ensure (); > + GQueue* queue = dev->event_queue; > + if (queue) > + { > +@@ -364,6 +367,7 @@ queue_event (OskDevices* dev, OskDeviceE > + Py_INCREF(event); > + g_queue_push_head(queue, event); > + } > ++ PyGILState_Release (state); > + } > + > + static gboolean idle_process_event_queue (OskDevices* dev) > diff --git a/meta-gnome/recipes-support/onboard/onboard_1.4.1.bb b/meta-gnome/recipes-support/onboard/onboard_1.4.1.bb > new file mode 100644 > index 000000000..359a2134e > --- /dev/null > +++ b/meta-gnome/recipes-support/onboard/onboard_1.4.1.bb > @@ -0,0 +1,36 @@ > +SUMMARY = "An onscreen keyboard" > +LICENSE = "GPL-3.0-only" > +LIC_FILES_CHKSUM = "file://COPYING.GPL3;md5=8521fa4dd51909b407c5150498d34f4e" > + > +DEPENDS += "gtk+3 hunspell libcanberra libxkbfile dconf python3-distutils-extra-native intltool-native" > + > +SRC_URI = "https://launchpad.net/onboard/1.4/${PV}/+download/${BPN}-${PV}.tar.gz \ > + file://0001-pypredict-lm-Define-error-API-if-platform-does-not-h.patch \ > + file://0002-onboard-onhover-seg-fault-fix.patch \ > + " > +SRC_URI[md5sum] = "1a2fbe82e934f5b37841d17ff51e80e8" > +SRC_URI[sha256sum] = "01cae1ac5b1ef1ab985bd2d2d79ded6fc99ee04b1535cc1bb191e43a231a3865" > + > +inherit features_check setuptools3 pkgconfig gtk-icon-cache gsettings mime-xdg > + > +REQUIRED_DISTRO_FEATURES = "x11" > + > +FILES:${PN} += " \ > + ${datadir}/dbus-1 \ > + ${datadir}/icons \ > + ${datadir}/gnome-shell \ > + ${datadir}/help \ > +" > + > +RDEPENDS:${PN} += " \ > + ncurses \ > + python3-dbus \ > + python3-pycairo \ > + python3-pygobject \ > +" > + > +do_install:append() { > + install -d ${D}${sysconfdir}/xdg/autostart > + > + mv ${D}${PYTHON_SITEPACKAGES_DIR}${sysconfdir}/xdg/autostart/onboard-autostart.desktop ${D}${sysconfdir}/xdg/autostart Use a single line to create the dir and copy the file. Install -Dm 0644 ${D}${PYTHON_SITEPACKAGES_DIR}${sysconfdir}/xdg/autostart/onboard-autostart.desktop ${D}${sysconfdir}/xdg/autostart/onboard-autostart.desktop > +} > -- > 2.43.0 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#113995): https://lists.openembedded.org/g/openembedded-devel/message/113995 > Mute This Topic: https://lists.openembedded.org/mt/109720017/1997914 > Group Owner: openembedded-devel+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
another failure ERROR: onboard-1.4.1-r0 do_patch: QA Issue: Missing Upstream-Status in patch /mnt/b/yoe/master/sources/meta-openembedded/meta-gnome/recipes-support/onboard/onboard/0001-pypredict-lm-Define-error-API-if-platform-does- not-h.patch On Fri, Nov 22, 2024 at 8:28 AM Khem Raj <raj.khem@gmail.com> wrote: > > On Fri, Nov 22, 2024 at 2:08 AM pratheekshasn via > lists.openembedded.org <pratheeksha.s.n=ni.com@lists.openembedded.org> > wrote: > > > > Signed-off by: Pratheeksha S N <pratheeksha.s.n@ni.com> > > --- > > ...ine-error-API-if-platform-does-not-h.patch | 67 +++++++++++++++++++ > > .../0002-onboard-onhover-seg-fault-fix.patch | 52 ++++++++++++++ > > .../recipes-support/onboard/onboard_1.4.1.bb | 36 ++++++++++ > > 3 files changed, 155 insertions(+) > > create mode 100644 meta-gnome/recipes-support/onboard/onboard/0001-pypredict-lm-Define-error-API-if-platform-does-not-h.patch > > create mode 100644 meta-gnome/recipes-support/onboard/onboard/0002-onboard-onhover-seg-fault-fix.patch > > create mode 100644 meta-gnome/recipes-support/onboard/onboard_1.4.1.bb > > > > diff --git a/meta-gnome/recipes-support/onboard/onboard/0001-pypredict-lm-Define-error-API-if-platform-does-not-h.patch b/meta-gnome/recipes-support/onboard/onboard/0001-pypredict-lm-Define-error-API-if-platform-does-not-h.patch > > new file mode 100644 > > index 000000000..fda37895c > > --- /dev/null > > +++ b/meta-gnome/recipes-support/onboard/onboard/0001-pypredict-lm-Define-error-API-if-platform-does-not-h.patch > > @@ -0,0 +1,67 @@ > > +From 1c95f64aa342147387ce4b1b7269a5c8b34bd898 Mon Sep 17 00:00:00 2001 > > +From: Khem Raj <raj.khem@gmail.com> > > +Date: Thu, 13 Jul 2017 09:01:04 -0700 > > +Subject: [PATCH] pypredict/lm: Define error API if platform does not have it > > + > > +error() API is not implemented across all libcs on linux > > +e.g. musl does not provide it. > > + > > +Signed-off-by: Khem Raj <raj.khem@gmail.com> > > +--- > > + Onboard/pypredict/lm/lm.cpp | 1 - > > + Onboard/pypredict/lm/lm.h | 13 +++++++++++++ > > + Onboard/pypredict/lm/lm_dynamic.cpp | 2 -- > > + 3 files changed, 13 insertions(+), 3 deletions(-) > > + > > +diff --git a/Onboard/pypredict/lm/lm.cpp b/Onboard/pypredict/lm/lm.cpp > > +index 2e64296..37ae241 100644 > > +--- a/Onboard/pypredict/lm/lm.cpp > > ++++ b/Onboard/pypredict/lm/lm.cpp > > +@@ -19,7 +19,6 @@ > > + > > + #include <stdlib.h> > > + #include <stdio.h> > > +-#include <error.h> > > + #include <algorithm> > > + #include <cmath> > > + #include <string> > > +diff --git a/Onboard/pypredict/lm/lm.h b/Onboard/pypredict/lm/lm.h > > +index ed4164a..b8b63ee 100644 > > +--- a/Onboard/pypredict/lm/lm.h > > ++++ b/Onboard/pypredict/lm/lm.h > > +@@ -32,6 +32,19 @@ > > + #include <algorithm> > > + #include <string> > > + > > ++#if defined(HAVE_ERROR_H) > > ++#include <error.h> > > ++#else > > ++#include <err.h> > > ++#define _onboard_error(S, E, F, ...) do { \ > > ++ if (E) \ > > ++ err(S, F ": %s", ##__VA_ARGS__, strerror(E)); \ > > ++ else \ > > ++ err(S, F, ##__VA_ARGS__); \ > > ++} while(0) > > ++ > > ++#define error _onboard_error > > ++#endif > > + > > + // break into debugger > > + // step twice to come back out of the raise() call into known code > > +diff --git a/Onboard/pypredict/lm/lm_dynamic.cpp b/Onboard/pypredict/lm/lm_dynamic.cpp > > +index 7c62824..e7c7f40 100644 > > +--- a/Onboard/pypredict/lm/lm_dynamic.cpp > > ++++ b/Onboard/pypredict/lm/lm_dynamic.cpp > > +@@ -17,8 +17,6 @@ > > + * along with this program. If not, see <http://www.gnu.org/licenses/>. > > + */ > > + > > +-#include <error.h> > > +- > > + #include "lm_dynamic.h" > > + > > + using namespace std; > > +-- > > +2.13.2 > > + > > diff --git a/meta-gnome/recipes-support/onboard/onboard/0002-onboard-onhover-seg-fault-fix.patch b/meta-gnome/recipes-support/onboard/onboard/0002-onboard-onhover-seg-fault-fix.patch > > new file mode 100644 > > index 000000000..1ec195cb8 > > --- /dev/null > > +++ b/meta-gnome/recipes-support/onboard/onboard/0002-onboard-onhover-seg-fault-fix.patch > > @@ -0,0 +1,52 @@ > > +From: 1be95325d320122efd5dedf7437839cfcca01f7a > > +From: https://github.com/void-linux/void-packages/commit/1be95325d320122efd5dedf7437839cfcca01f7a > > +Date: Mon, 23 Sep 2024 > > +Subject: [PATCH] onboard: fix segfault when hovering over the keyboard > > + > > +Currently, if the mouse pointer is hovered over the Onboard keyboard, the application crashes with a segmentation fault. > > +This is because the new_device_event function is not acquiring the GIL before creating a new object. This patch fixes > > +the issue by acquiring the GIL before creating a new object. It also acquires the GIL before queueing the event. > > +This patch is taken from the fix provided in the following link: > > +https://github.com/void-linux/void-packages/commit/1be95325d320122efd5dedf7437839cfcca01f7a > > + > > +Signed-off by: Pratheeksha S N <pratheeksha.s.n@ni.com> > > + > > +Upstream-Status: Inactive-Upstream [lastcommit: 2017-10-09] > > + > > +--- a/Onboard/osk/osk_devices.c > > ++++ b/Onboard/osk/osk_devices.c > > +@@ -97,13 +97,15 @@ osk_device_event_dealloc (OskDeviceEvent > > + static OskDeviceEvent* > > + new_device_event (void) > > + { > > +- OskDeviceEvent *ev = PyObject_New(OskDeviceEvent, &osk_device_event_type); > > ++ OskDeviceEvent *ev; > > ++ PyGILState_STATE gstate = PyGILState_Ensure(); > > ++ ev = PyObject_New(OskDeviceEvent, &osk_device_event_type); > > + if (ev) > > + { > > + osk_device_event_type.tp_init((PyObject*) ev, NULL, NULL); > > +- return ev; > > + } > > +- return NULL; > > ++ PyGILState_Release(gstate); > > ++ return ev; > > + } > > + > > + static PyObject * > > +@@ -334,6 +336,7 @@ osk_devices_dealloc (OskDevices *dev) > > + static void > > + queue_event (OskDevices* dev, OskDeviceEvent* event, Bool discard_pending) > > + { > > ++ PyGILState_STATE state = PyGILState_Ensure (); > > + GQueue* queue = dev->event_queue; > > + if (queue) > > + { > > +@@ -364,6 +367,7 @@ queue_event (OskDevices* dev, OskDeviceE > > + Py_INCREF(event); > > + g_queue_push_head(queue, event); > > + } > > ++ PyGILState_Release (state); > > + } > > + > > + static gboolean idle_process_event_queue (OskDevices* dev) > > diff --git a/meta-gnome/recipes-support/onboard/onboard_1.4.1.bb b/meta-gnome/recipes-support/onboard/onboard_1.4.1.bb > > new file mode 100644 > > index 000000000..359a2134e > > --- /dev/null > > +++ b/meta-gnome/recipes-support/onboard/onboard_1.4.1.bb > > @@ -0,0 +1,36 @@ > > +SUMMARY = "An onscreen keyboard" > > +LICENSE = "GPL-3.0-only" > > +LIC_FILES_CHKSUM = "file://COPYING.GPL3;md5=8521fa4dd51909b407c5150498d34f4e" > > + > > +DEPENDS += "gtk+3 hunspell libcanberra libxkbfile dconf python3-distutils-extra-native intltool-native" > > + > > +SRC_URI = "https://launchpad.net/onboard/1.4/${PV}/+download/${BPN}-${PV}.tar.gz \ > > + file://0001-pypredict-lm-Define-error-API-if-platform-does-not-h.patch \ > > + file://0002-onboard-onhover-seg-fault-fix.patch \ > > + " > > +SRC_URI[md5sum] = "1a2fbe82e934f5b37841d17ff51e80e8" > > +SRC_URI[sha256sum] = "01cae1ac5b1ef1ab985bd2d2d79ded6fc99ee04b1535cc1bb191e43a231a3865" > > + > > +inherit features_check setuptools3 pkgconfig gtk-icon-cache gsettings mime-xdg > > + > > +REQUIRED_DISTRO_FEATURES = "x11" > > + > > +FILES:${PN} += " \ > > + ${datadir}/dbus-1 \ > > + ${datadir}/icons \ > > + ${datadir}/gnome-shell \ > > + ${datadir}/help \ > > +" > > + > > +RDEPENDS:${PN} += " \ > > + ncurses \ > > + python3-dbus \ > > + python3-pycairo \ > > + python3-pygobject \ > > +" > > + > > +do_install:append() { > > + install -d ${D}${sysconfdir}/xdg/autostart > > + > > + mv ${D}${PYTHON_SITEPACKAGES_DIR}${sysconfdir}/xdg/autostart/onboard-autostart.desktop ${D}${sysconfdir}/xdg/autostart > > Use a single line to create the dir and copy the file. > > Install -Dm 0644 > ${D}${PYTHON_SITEPACKAGES_DIR}${sysconfdir}/xdg/autostart/onboard-autostart.desktop > ${D}${sysconfdir}/xdg/autostart/onboard-autostart.desktop > > > +} > > -- > > 2.43.0 > > > > > > -=-=-=-=-=-=-=-=-=-=-=- > > Links: You receive all messages sent to this group. > > View/Reply Online (#113995): https://lists.openembedded.org/g/openembedded-devel/message/113995 > > Mute This Topic: https://lists.openembedded.org/mt/109720017/1997914 > > Group Owner: openembedded-devel+owner@lists.openembedded.org > > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com] > > -=-=-=-=-=-=-=-=-=-=-=- > >
diff --git a/meta-gnome/recipes-support/onboard/onboard/0001-pypredict-lm-Define-error-API-if-platform-does-not-h.patch b/meta-gnome/recipes-support/onboard/onboard/0001-pypredict-lm-Define-error-API-if-platform-does-not-h.patch new file mode 100644 index 000000000..fda37895c --- /dev/null +++ b/meta-gnome/recipes-support/onboard/onboard/0001-pypredict-lm-Define-error-API-if-platform-does-not-h.patch @@ -0,0 +1,67 @@ +From 1c95f64aa342147387ce4b1b7269a5c8b34bd898 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Thu, 13 Jul 2017 09:01:04 -0700 +Subject: [PATCH] pypredict/lm: Define error API if platform does not have it + +error() API is not implemented across all libcs on linux +e.g. musl does not provide it. + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + Onboard/pypredict/lm/lm.cpp | 1 - + Onboard/pypredict/lm/lm.h | 13 +++++++++++++ + Onboard/pypredict/lm/lm_dynamic.cpp | 2 -- + 3 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/Onboard/pypredict/lm/lm.cpp b/Onboard/pypredict/lm/lm.cpp +index 2e64296..37ae241 100644 +--- a/Onboard/pypredict/lm/lm.cpp ++++ b/Onboard/pypredict/lm/lm.cpp +@@ -19,7 +19,6 @@ + + #include <stdlib.h> + #include <stdio.h> +-#include <error.h> + #include <algorithm> + #include <cmath> + #include <string> +diff --git a/Onboard/pypredict/lm/lm.h b/Onboard/pypredict/lm/lm.h +index ed4164a..b8b63ee 100644 +--- a/Onboard/pypredict/lm/lm.h ++++ b/Onboard/pypredict/lm/lm.h +@@ -32,6 +32,19 @@ + #include <algorithm> + #include <string> + ++#if defined(HAVE_ERROR_H) ++#include <error.h> ++#else ++#include <err.h> ++#define _onboard_error(S, E, F, ...) do { \ ++ if (E) \ ++ err(S, F ": %s", ##__VA_ARGS__, strerror(E)); \ ++ else \ ++ err(S, F, ##__VA_ARGS__); \ ++} while(0) ++ ++#define error _onboard_error ++#endif + + // break into debugger + // step twice to come back out of the raise() call into known code +diff --git a/Onboard/pypredict/lm/lm_dynamic.cpp b/Onboard/pypredict/lm/lm_dynamic.cpp +index 7c62824..e7c7f40 100644 +--- a/Onboard/pypredict/lm/lm_dynamic.cpp ++++ b/Onboard/pypredict/lm/lm_dynamic.cpp +@@ -17,8 +17,6 @@ + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +-#include <error.h> +- + #include "lm_dynamic.h" + + using namespace std; +-- +2.13.2 + diff --git a/meta-gnome/recipes-support/onboard/onboard/0002-onboard-onhover-seg-fault-fix.patch b/meta-gnome/recipes-support/onboard/onboard/0002-onboard-onhover-seg-fault-fix.patch new file mode 100644 index 000000000..1ec195cb8 --- /dev/null +++ b/meta-gnome/recipes-support/onboard/onboard/0002-onboard-onhover-seg-fault-fix.patch @@ -0,0 +1,52 @@ +From: 1be95325d320122efd5dedf7437839cfcca01f7a +From: https://github.com/void-linux/void-packages/commit/1be95325d320122efd5dedf7437839cfcca01f7a +Date: Mon, 23 Sep 2024 +Subject: [PATCH] onboard: fix segfault when hovering over the keyboard + +Currently, if the mouse pointer is hovered over the Onboard keyboard, the application crashes with a segmentation fault. +This is because the new_device_event function is not acquiring the GIL before creating a new object. This patch fixes +the issue by acquiring the GIL before creating a new object. It also acquires the GIL before queueing the event. +This patch is taken from the fix provided in the following link: +https://github.com/void-linux/void-packages/commit/1be95325d320122efd5dedf7437839cfcca01f7a + +Signed-off by: Pratheeksha S N <pratheeksha.s.n@ni.com> + +Upstream-Status: Inactive-Upstream [lastcommit: 2017-10-09] + +--- a/Onboard/osk/osk_devices.c ++++ b/Onboard/osk/osk_devices.c +@@ -97,13 +97,15 @@ osk_device_event_dealloc (OskDeviceEvent + static OskDeviceEvent* + new_device_event (void) + { +- OskDeviceEvent *ev = PyObject_New(OskDeviceEvent, &osk_device_event_type); ++ OskDeviceEvent *ev; ++ PyGILState_STATE gstate = PyGILState_Ensure(); ++ ev = PyObject_New(OskDeviceEvent, &osk_device_event_type); + if (ev) + { + osk_device_event_type.tp_init((PyObject*) ev, NULL, NULL); +- return ev; + } +- return NULL; ++ PyGILState_Release(gstate); ++ return ev; + } + + static PyObject * +@@ -334,6 +336,7 @@ osk_devices_dealloc (OskDevices *dev) + static void + queue_event (OskDevices* dev, OskDeviceEvent* event, Bool discard_pending) + { ++ PyGILState_STATE state = PyGILState_Ensure (); + GQueue* queue = dev->event_queue; + if (queue) + { +@@ -364,6 +367,7 @@ queue_event (OskDevices* dev, OskDeviceE + Py_INCREF(event); + g_queue_push_head(queue, event); + } ++ PyGILState_Release (state); + } + + static gboolean idle_process_event_queue (OskDevices* dev) diff --git a/meta-gnome/recipes-support/onboard/onboard_1.4.1.bb b/meta-gnome/recipes-support/onboard/onboard_1.4.1.bb new file mode 100644 index 000000000..359a2134e --- /dev/null +++ b/meta-gnome/recipes-support/onboard/onboard_1.4.1.bb @@ -0,0 +1,36 @@ +SUMMARY = "An onscreen keyboard" +LICENSE = "GPL-3.0-only" +LIC_FILES_CHKSUM = "file://COPYING.GPL3;md5=8521fa4dd51909b407c5150498d34f4e" + +DEPENDS += "gtk+3 hunspell libcanberra libxkbfile dconf python3-distutils-extra-native intltool-native" + +SRC_URI = "https://launchpad.net/onboard/1.4/${PV}/+download/${BPN}-${PV}.tar.gz \ + file://0001-pypredict-lm-Define-error-API-if-platform-does-not-h.patch \ + file://0002-onboard-onhover-seg-fault-fix.patch \ + " +SRC_URI[md5sum] = "1a2fbe82e934f5b37841d17ff51e80e8" +SRC_URI[sha256sum] = "01cae1ac5b1ef1ab985bd2d2d79ded6fc99ee04b1535cc1bb191e43a231a3865" + +inherit features_check setuptools3 pkgconfig gtk-icon-cache gsettings mime-xdg + +REQUIRED_DISTRO_FEATURES = "x11" + +FILES:${PN} += " \ + ${datadir}/dbus-1 \ + ${datadir}/icons \ + ${datadir}/gnome-shell \ + ${datadir}/help \ +" + +RDEPENDS:${PN} += " \ + ncurses \ + python3-dbus \ + python3-pycairo \ + python3-pygobject \ +" + +do_install:append() { + install -d ${D}${sysconfdir}/xdg/autostart + + mv ${D}${PYTHON_SITEPACKAGES_DIR}${sysconfdir}/xdg/autostart/onboard-autostart.desktop ${D}${sysconfdir}/xdg/autostart +}