locale: store polkit_registry in Context
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 22 Nov 2018 21:12:55 +0000 (06:12 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 22 Nov 2018 21:22:30 +0000 (06:22 +0900)
src/locale/keymap-util.c
src/locale/keymap-util.h
src/locale/localed.c

index 495261f..0bf62df 100644 (file)
@@ -5,6 +5,7 @@
 #include <string.h>
 #include <unistd.h>
 
+#include "bus-util.h"
 #include "def.h"
 #include "env-util.h"
 #include "fd-util.h"
@@ -76,6 +77,8 @@ void context_clear(Context *c) {
         sd_bus_message_unref(c->locale_cache);
         sd_bus_message_unref(c->x11_cache);
         sd_bus_message_unref(c->vc_cache);
+
+        bus_verify_polkit_async_registry_free(c->polkit_registry);
 };
 
 void locale_simplify(char *locale[_VARIABLE_LC_MAX]) {
index 278c74b..6eced84 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "sd-bus.h"
 
+#include "hashmap.h"
 #include "locale-util.h"
 #include "time-util.h"
 
@@ -22,6 +23,8 @@ typedef struct Context {
         usec_t vc_mtime;
         char *vc_keymap;
         char *vc_keymap_toggle;
+
+        Hashmap *polkit_registry;
 } Context;
 
 int find_converted_keymap(const char *x11_layout, const char *x11_variant, char **new_keymap);
index b9dffea..6174132 100644 (file)
@@ -26,8 +26,6 @@
 #include "strv.h"
 #include "user-util.h"
 
-static Hashmap *polkit_registry = NULL;
-
 static int locale_update_system_manager(Context *c, sd_bus *bus) {
         _cleanup_free_ char **l_unset = NULL;
         _cleanup_strv_free_ char **l_set = NULL;
@@ -362,7 +360,7 @@ static int method_set_locale(sd_bus_message *m, void *userdata, sd_bus_error *er
                         NULL,
                         interactive,
                         UID_INVALID,
-                        &polkit_registry,
+                        &c->polkit_registry,
                         error);
         if (r < 0)
                 return r;
@@ -433,7 +431,7 @@ static int method_set_vc_keyboard(sd_bus_message *m, void *userdata, sd_bus_erro
                         NULL,
                         interactive,
                         UID_INVALID,
-                        &polkit_registry,
+                        &c->polkit_registry,
                         error);
         if (r < 0)
                 return r;
@@ -626,7 +624,7 @@ static int method_set_x11_keyboard(sd_bus_message *m, void *userdata, sd_bus_err
                         NULL,
                         interactive,
                         UID_INVALID,
-                        &polkit_registry,
+                        &c->polkit_registry,
                         error);
         if (r < 0)
                 return r;
@@ -762,7 +760,5 @@ int main(int argc, char *argv[]) {
                 log_error_errno(r, "Failed to run event loop: %m");
 
 finish:
-        bus_verify_polkit_async_registry_free(polkit_registry);
-
         return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
 }