diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-03-22 15:37:36 +0000 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-03-22 15:37:36 +0000 |
commit | 29efa57d5a27b0cf5997381053be9cc48b2c2e80 (patch) | |
tree | 1eb1b9851e382f600a576e85c19e9d69cf3a730a | |
parent | 957ead88e8a90526631f1a767ba1006bc03b8084 (diff) |
Convert input service into a plugin
-rw-r--r-- | input/Makefile.am | 18 | ||||
-rw-r--r-- | input/input.service | 5 | ||||
-rw-r--r-- | input/main.c | 71 | ||||
-rw-r--r-- | input/manager.c | 4 | ||||
-rw-r--r-- | input/manager.h | 4 |
5 files changed, 27 insertions, 75 deletions
diff --git a/input/Makefile.am b/input/Makefile.am index cb56f812..52a46a74 100644 --- a/input/Makefile.am +++ b/input/Makefile.am @@ -1,16 +1,10 @@ if INPUTSERVICE -if CONFIGFILES -confdir = $(sysconfdir)/bluetooth +plugindir = $(libdir)/bluetooth/plugins -conf_DATA = input.service -endif - -servicedir = $(libdir)/bluetooth +plugin_LTLIBRARIES = libinput.la -service_PROGRAMS = bluetoothd-service-input - -bluetoothd_service_input_SOURCES = main.c \ +libinput_la_SOURCES = main.c \ manager.h manager.c \ server.h server.c device.h device.c storage.h storage.c \ fakehid.c fakehid.h @@ -19,10 +13,12 @@ LDADD = $(top_builddir)/common/libhelper.a \ @GLIB_LIBS@ @DBUS_LIBS@ @BLUEZ_LIBS@ endif +AM_LDFLAGS = -module -avoid-version -export-symbols-regex bluetooth_plugin_desc + AM_CFLAGS = @BLUEZ_CFLAGS@ @DBUS_CFLAGS@ @GLIB_CFLAGS@ -INCLUDES = -I$(top_srcdir)/common +INCLUDES = -I$(top_srcdir)/common -I$(top_srcdir)/hcid -EXTRA_DIST = input.service input-api.txt test-input +EXTRA_DIST = input-api.txt test-input MAINTAINERCLEANFILES = Makefile.in diff --git a/input/input.service b/input/input.service deleted file mode 100644 index f5a105f8..00000000 --- a/input/input.service +++ /dev/null @@ -1,5 +0,0 @@ -[Bluetooth Service] -Identifier=input -Name=Input service -Description=Bluetooth HID based Input service -Autostart=true diff --git a/input/main.c b/input/main.c index a3d83ff6..4589cc33 100644 --- a/input/main.c +++ b/input/main.c @@ -25,76 +25,37 @@ #include <config.h> #endif -#include <stdio.h> -#include <unistd.h> -#include <stdlib.h> -#include <string.h> #include <errno.h> -#include <signal.h> #include <dbus/dbus.h> -#include <glib.h> - +#include "plugin.h" #include "dbus.h" -#include "logging.h" - #include "manager.h" -static GMainLoop *main_loop; - -static void sig_term(int sig) -{ - g_main_loop_quit(main_loop); -} +static DBusConnection *conn; -int main(int argc, char *argv[]) +static int input_init(void) { - DBusConnection *conn; - struct sigaction sa; - - start_logging("input", "Bluetooth Input daemon"); + conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); + if (conn == NULL) + return -EIO; - memset(&sa, 0, sizeof(sa)); - sa.sa_flags = SA_NOCLDSTOP; - sa.sa_handler = sig_term; - sigaction(SIGTERM, &sa, NULL); - sigaction(SIGINT, &sa, NULL); - - sa.sa_handler = SIG_IGN; - sigaction(SIGCHLD, &sa, NULL); - sigaction(SIGPIPE, &sa, NULL); - - enable_debug(); - - main_loop = g_main_loop_new(NULL, FALSE); - - conn = dbus_bus_system_setup_with_main_loop(NULL, NULL, NULL); - if (!conn) { - g_main_loop_unref(main_loop); - exit(1); - } - - if (input_init(conn) < 0) { + if (input_manager_init(conn) < 0) { dbus_connection_unref(conn); - g_main_loop_unref(main_loop); - exit(1); + return -EIO; } - if (argc > 1 && !strcmp(argv[1], "-s")) - register_external_service(conn, "input", "Input service", ""); + register_external_service(conn, "input", "Input service", ""); - g_main_loop_run(main_loop); + return 0; +} - input_exit(); +static void input_exit(void) +{ + input_manager_exit(); dbus_connection_unref(conn); - - g_main_loop_unref(main_loop); - - info("Exit"); - - stop_logging(); - - return 0; } + +BLUETOOTH_PLUGIN_DEFINE("input", input_init, input_exit) diff --git a/input/manager.c b/input/manager.c index a717c909..953b44ac 100644 --- a/input/manager.c +++ b/input/manager.c @@ -1160,7 +1160,7 @@ static DBusSignalVTable manager_signals[] = { { NULL, NULL } }; -int input_init(DBusConnection *conn) +int input_manager_init(DBusConnection *conn) { dbus_connection_set_exit_on_disconnect(conn, TRUE); @@ -1192,7 +1192,7 @@ int input_init(DBusConnection *conn) return 0; } -void input_exit(void) +void input_manager_exit(void) { dbus_connection_destroy_object_path(connection, INPUT_PATH); diff --git a/input/manager.h b/input/manager.h index d55bb191..cccff683 100644 --- a/input/manager.h +++ b/input/manager.h @@ -24,5 +24,5 @@ #define INPUT_PATH "/org/bluez/input" #define INPUT_MANAGER_INTERFACE "org.bluez.input.Manager" -int input_init(DBusConnection *conn); -void input_exit(void); +int input_manager_init(DBusConnection *conn); +void input_manager_exit(void); |