File: manager-Use-channel-manager-from-mm-manager.patch

package info (click to toggle)
cellbroadcastd 0.0.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 864 kB
  • sloc: ansic: 4,528; xml: 132; python: 22; makefile: 16; sh: 10
file content (186 lines) | stat: -rw-r--r-- 6,081 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
From: =?utf-8?q?Guido_G=C3=BCnther?= <agx@sigxcpu.org>
Date: Sat, 9 Aug 2025 10:27:38 +0200
Subject: manager: Use channel manager from mm-manager
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit

The channel manager used by `CbdManager` wasn't initialized
with the correct country and not updated on country changes
either. The one used by `CbdMmManager` handles this already
so just use that one. This also avoids parsing the channel
information in multiple places.

This fixes incorrect severity on Cell Broadcast messages
in the database due to a not set country in the channel
manager.

Fixes: 92fea28 ("manager: Use CbdChannelManager to determine message severity levels")
Signed-off-by: Guido Günther <agx@sigxcpu.org>
(cherry picked from commit 980097164085ba1cb442046bae51fe0a602afcba)
---
 src/cbd-daemon.c  |  2 +-
 src/cbd-manager.c | 77 +++++--------------------------------------------------
 src/cbd-manager.h |  5 +---
 3 files changed, 8 insertions(+), 76 deletions(-)

diff --git a/src/cbd-daemon.c b/src/cbd-daemon.c
index 4ecb275..281a958 100644
--- a/src/cbd-daemon.c
+++ b/src/cbd-daemon.c
@@ -63,7 +63,7 @@ cbd_daemon_dbus_register (GApplication    *application,
     return success;
 
   g_debug ("Registered on bus, exporting manager");
-  self->manager = cbd_manager_new (self->channel_manager);
+  self->manager = cbd_manager_new ();
 
   success = g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (self->manager),
                                               connection,
diff --git a/src/cbd-manager.c b/src/cbd-manager.c
index e8638c3..7392a44 100644
--- a/src/cbd-manager.c
+++ b/src/cbd-manager.c
@@ -20,14 +20,6 @@
 #include <glib/gstdio.h>
 
 
-enum {
-  PROP_0,
-  PROP_CHANNEL_MANAGER,
-  PROP_LAST_PROP
-};
-static GParamSpec *props[PROP_LAST_PROP];
-
-
 typedef struct _CbdManager {
   LcbDBusCbdSkeleton parent;
 
@@ -36,7 +28,6 @@ typedef struct _CbdManager {
 
   GCancellable         *cancellable;
   CbdMmManager         *mm_manager;
-  CbdChannelManager    *channel_manager;
 
   GSettings            *settings;
   char                 *db_path;
@@ -54,43 +45,6 @@ G_DEFINE_FINAL_TYPE_WITH_CODE (CbdManager,
 #define MSG_DEDUP_MAX_TIMEDELTA (60 * 60 * 24) /* seconds */
 #define MSG_DEDUP_MAX_TIMEDELTA_JP (60 * 60) /* seconds */
 
-static void
-cbd_manager_set_property (GObject      *object,
-                          guint         property_id,
-                          const GValue *value,
-                          GParamSpec   *pspec)
-{
-  CbdManager *self = CBD_MANAGER (object);
-
-  switch (property_id) {
-  case PROP_CHANNEL_MANAGER:
-    cbd_manager_set_channel_manager (self, g_value_get_object (value));
-    break;
-  default:
-    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-    break;
-  }
-}
-
-
-static void
-cbd_manager_get_property (GObject    *object,
-                          guint       property_id,
-                          GValue     *value,
-                          GParamSpec *pspec)
-{
-  CbdManager *self = CBD_MANAGER (object);
-
-  switch (property_id) {
-  case PROP_CHANNEL_MANAGER:
-    g_value_set_object (value, self->channel_manager);
-    break;
-  default:
-    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-    break;
-  }
-}
-
 
 static gboolean
 cbd_manager_handle_open_messages (LcbDBusCbd            *object,
@@ -525,9 +479,12 @@ on_new_cbm (CbdMmManager *mm_manager,
   LcbSeverityLevel severity;
   const char *severity_subject;
   gboolean recent;
+  CbdChannelManager *channel_manager;
 
   g_debug ("New CBM (%d): %s", channel, text);
-  severity = cbd_channel_manager_lookup_level (self->channel_manager, channel);
+  channel_manager = cbd_mm_manager_get_channel_manager (mm_manager);
+  severity = cbd_channel_manager_lookup_level (channel_manager, channel);
+
   severity_subject = severity_to_string (severity);
   msg = cbd_message_new (text,
                          channel,
@@ -564,15 +521,6 @@ cbd_manager_class_init (CbdManagerClass *klass)
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
   object_class->dispose = cbd_manager_dispose;
-  object_class->get_property = cbd_manager_get_property;
-  object_class->set_property = cbd_manager_set_property;
-
-  props[PROP_CHANNEL_MANAGER] =
-    g_param_spec_object ("channel-manager", "", "",
-                         CBD_TYPE_CHANNEL_MANAGER,
-                         G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
-
-  g_object_class_install_properties (object_class, PROP_LAST_PROP, props);
 }
 
 static void
@@ -616,11 +564,9 @@ cbd_manager_init (CbdManager *self)
 }
 
 CbdManager *
-cbd_manager_new (CbdChannelManager *channel_manager)
+cbd_manager_new (void)
 {
-  return g_object_new (CBD_TYPE_MANAGER,
-                       "channel-manager", channel_manager,
-                       NULL);
+  return g_object_new (CBD_TYPE_MANAGER, NULL);
 }
 
 /**
@@ -645,14 +591,3 @@ cbd_manager_add_message (CbdManager *self,
   save_to_db (self);
   return TRUE;
 }
-
-
-void
-cbd_manager_set_channel_manager (CbdManager        *self,
-                                 CbdChannelManager *channel_manager)
-{
-  g_return_if_fail (CBD_IS_MANAGER (self));
-  g_return_if_fail (CBD_IS_CHANNEL_MANAGER (channel_manager));
-
-  g_set_object (&self->channel_manager, channel_manager);
-}
diff --git a/src/cbd-manager.h b/src/cbd-manager.h
index e7c77a8..fa0d6c6 100644
--- a/src/cbd-manager.h
+++ b/src/cbd-manager.h
@@ -21,11 +21,8 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (CbdManager, cbd_manager, CBD, MANAGER, LcbDBusCbdSkeleton);
 
-CbdManager *cbd_manager_new                     (CbdChannelManager *channel_manager);
+CbdManager *cbd_manager_new                     (void);
 gboolean    cbd_manager_add_message             (CbdManager *self,
                                                  CbdMessage *message);
-void        cbd_manager_set_channel_manager     (CbdManager        *self,
-                                                 CbdChannelManager *channel_manager);
-
 
 G_END_DECLS