Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
aports
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Monitor
Service Desk
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
alpine
aports
Commits
f3eec092
Commit
f3eec092
authored
4 years ago
by
Bart Ribbers
Committed by
Rasmus Thomsen
4 years ago
Browse files
Options
Downloads
Patches
Plain Diff
community/phosh: backport patch to fix a phantom launcher
parent
18373353
Loading
Loading
3 merge requests
!11958
community/rclone: upgrade to 1.52.3
,
!9763
[3.12] community/znc: upgrade to 1.8.1
,
!9496
community/phosh: backport patch to fix a phantom launcher
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
community/phosh/0001-app-list-model-phantom-launcher.patch
+155
-0
155 additions, 0 deletions
community/phosh/0001-app-list-model-phantom-launcher.patch
community/phosh/APKBUILD
+4
-2
4 additions, 2 deletions
community/phosh/APKBUILD
with
159 additions
and
2 deletions
community/phosh/0001-app-list-model-phantom-launcher.patch
0 → 100644
+
155
−
0
View file @
f3eec092
Taken from upstream, fixes an issue where an application launcher would
in some cases disappear making it impossible to launch that application
via the GUI.
From 1b642cd8ba63fd10ad40030e1e9c16e04c090e6e Mon Sep 17 00:00:00 2001
From: Zander Brown <zbrown@gnome.org>
Date: Fri, 19 Jun 2020 19:49:14 +0100
Subject: [PATCH] app-list-model: phantom launcher
At last a fix for the missing item problem
tl;dr: we skipped the first entry
The reason it was weirdly deterministic is that we _always_ skipped
the first item and as long as the entries didn't change the item would
_always_ be the same
Why was the item seemingly random? Because the list doesn't have any
sorting at the point we lost an item
So why didn't this effect more people? A system has many, many entries -
a lot of which aren't actually app launchers. For example my laptop
currently has 301 entries of which 172 should actually be shown. By pure
fluke we got lucky most of the time and skipped an unintersting one.
The fix is painfully simple: iterate the GList properly
---
src/app-list-model.c | 18 +++++++++--------
tools/dump-app-list.c | 47 +++++++++++++++++++++++++++++++++++++++++++
tools/meson.build | 3 +++
3 files changed, 60 insertions(+), 8 deletions(-)
create mode 100644 tools/dump-app-list.c
diff --git a/src/app-list-model.c b/src/app-list-model.c
index 648ee00..5281985 100644
--- a/src/app-list-model.c
+++ b/src/app-list-model.c
@@ -1,12 +1,14 @@
/*
- * Copyright © 2019 Zander Brown <zbrown@gnome.org>
+ * Copyright © 2019-2020 Zander Brown <zbrown@gnome.org>
*
* Inspired by gliststore.c:
* Copyright 2015 Lars Uebernickel
* Copyright 2015 Ryan Lortie
* https://gitlab.gnome.org/GNOME/glib/blob/713fec9dcb1ee49c4f64bbb6f483a5cd1db9966a/gio/gliststore.c
*
- * SPDX-License-Identifier: GPL-3.0+
+ * SPDX-License-Identifier: GPL-3-or-later
+ *
+ * Author: Zander Brown <zbrown@gnome.org>
*/
#include "app-list-model.h"
@@ -116,27 +118,27 @@
items_changed (gpointer data)
{
PhoshAppListModel *self = PHOSH_APP_LIST_MODEL (data);
PhoshAppListModelPrivate *priv = phosh_app_list_model_get_instance_private (self);
- GList *new_apps;
+ g_autolist(GAppInfo) new_apps = NULL;
int removed;
int added = 0;
new_apps = g_app_info_get_all ();
+ g_return_val_if_fail (new_apps != NULL, G_SOURCE_REMOVE);
+
removed = g_sequence_get_length (priv->items);
g_sequence_remove_range (g_sequence_get_begin_iter (priv->items),
g_sequence_get_end_iter (priv->items));
- while ((new_apps = g_list_next (new_apps))) {
- if (!g_app_info_should_show (G_APP_INFO (new_apps->data))) {
+ for (GList *l = new_apps; l; l = g_list_next (l)) {
+ if (!g_app_info_should_show (G_APP_INFO (l->data))) {
continue;
}
- g_sequence_append (priv->items, g_object_ref (new_apps->data));
+ g_sequence_append (priv->items, g_object_ref (l->data));
added++;
}
- g_list_free_full (new_apps, g_object_unref);
-
priv->last.is_valid = FALSE;
priv->last.iter = NULL;
priv->last.position = 0;
diff --git a/tools/dump-app-list.c b/tools/dump-app-list.c
new file mode 100644
index 0000000..2f7919d
--- /dev/null
+++ b/tools/dump-app-list.c
@@ -0,0 +1,47 @@
+/*
+ * Copyright © 2020 Zander Brown <zbrown@gnome.org>
+ *
+ * SPDX-License-Identifier: GPL-3-or-later
+ *
+ * Author: Zander Brown <zbrown@gnome.org>
+ *
+ * Print the contents of PhoshAppListModel
+ */
+
+#include <app-list-model.h>
+
+int
+main (int argc, char **argv)
+{
+ PhoshAppListModel *list = phosh_app_list_model_get_default ();
+ int i = 0;
+ GAppInfo *info;
+ GMainLoop *loop;
+
+ g_print ("Populating...\n");
+
+ /* Let the main loop run a bit for the timeouts/idle callbacks to run */
+ loop = g_main_loop_new (NULL, FALSE);
+ g_timeout_add_seconds (2, G_SOURCE_FUNC (g_main_loop_quit), loop);
+ g_main_loop_run (loop);
+
+ while ((info = g_list_model_get_item (G_LIST_MODEL (list), i))) {
+ if (G_IS_DESKTOP_APP_INFO (info)) {
+ g_print ("%s\n - %s\n",
+ g_app_info_get_id (info),
+ g_desktop_app_info_get_filename (G_DESKTOP_APP_INFO (info)));
+ } else {
+ /* Unlikely but handle it just in case */
+ g_print ("%s\n - %s\n",
+ g_app_info_get_id (info),
+ G_OBJECT_TYPE_NAME (info));
+ }
+
+ i++;
+ g_clear_object (&info);
+ }
+
+ g_print ("=== %i items\n", i);
+
+ return 0;
+}
diff --git a/tools/meson.build b/tools/meson.build
index 65a6a6d..d3fdd13 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -34,3 +34,6 @@
executable('notify-blocks', ['notify-blocks.c'],
executable('notify-server-standalone', ['notify-server-standalone.c'] + stubs,
dependencies: phosh_dep)
+
+executable('dump-app-list', ['dump-app-list.c'],
+ dependencies: phosh_dep)
--
2.27.0
This diff is collapsed.
Click to expand it.
community/phosh/APKBUILD
+
4
−
2
View file @
f3eec092
...
...
@@ -2,7 +2,7 @@
# Maintainer: Rasmus Thomsen <oss@cogitri.dev>
pkgname
=
phosh
pkgver
=
0.3.0
pkgrel
=
0
pkgrel
=
1
pkgdesc
=
"Shell PoC for the Librem5"
# Blocked on mips and s390x by gnome-session, gnome-settings-daemon, squeekboard and libhandy
# Blocked on ppc64le by gnome-session
...
...
@@ -18,6 +18,7 @@ subpackages="$pkgname-lang"
source
=
"
$pkgname
-
$pkgver
.tar.xz::https://repo.pureos.net/pureos/pool/main/p/phosh/phosh_
$pkgver
.tar.xz
phosh.desktop
sm.puri.OSK0.desktop
0001-app-list-model-phantom-launcher.patch
"
options
=
"!check"
# Needs a running Wayland compositor
...
...
@@ -55,4 +56,5 @@ package() {
}
sha512sums
=
"13561a413ab56c678c0550e0fdb7d5cbf739c2b6bab5aec84037903e15a3352539d82fb2a9f5fd7b447378507530e5473e6f1add00c6e5c37f88c26f95caa602 phosh-0.3.0.tar.xz
6644870edbbbc6b88d6e19f7771d81dba1a11066c2b34e4c22736db73a2dfd0d4909b4967503059c35385c5139a834a5c06a3c56b148ba1275d7f089c0c5f33c phosh.desktop
f97019598323276cf97ae62f04b6245983198e04b228ddc605835ee46845d9b88c6890fb86e97e4bb6f1ad73361437d9ed18c91e81fe1284a88cdcb92d3fdc69 sm.puri.OSK0.desktop"
f97019598323276cf97ae62f04b6245983198e04b228ddc605835ee46845d9b88c6890fb86e97e4bb6f1ad73361437d9ed18c91e81fe1284a88cdcb92d3fdc69 sm.puri.OSK0.desktop
028ae14f8991b66ee3d9384f3b69a57c7e6a32379d2101bc4c0798de7d247f96af20b7993b4854e717fa5e711ef6ca780b38a4bca06f2d5f465bf677bc57fbd4 0001-app-list-model-phantom-launcher.patch"
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment