dbus: allow to select system or session message bus
This commit is contained in:
parent
840a0ae05c
commit
f08423f953
3 changed files with 15 additions and 6 deletions
|
@ -53,6 +53,7 @@ static struct dbus_rpc_list dbus_rpcs;
|
|||
static th_pipe_t dbus_pipe;
|
||||
static pthread_mutex_t dbus_lock;
|
||||
static int dbus_running;
|
||||
static int dbus_session;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -135,7 +136,7 @@ dbus_create_session(const char *name)
|
|||
|
||||
dbus_error_init(&err);
|
||||
|
||||
conn = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
|
||||
conn = dbus_bus_get_private(dbus_session ? DBUS_BUS_SESSION : DBUS_BUS_SYSTEM, &err);
|
||||
if (dbus_error_is_set(&err)) {
|
||||
tvherror("dbus", "Connection error: %s", err.message);
|
||||
dbus_error_free(&err);
|
||||
|
@ -146,11 +147,13 @@ dbus_create_session(const char *name)
|
|||
if (dbus_error_is_set(&err)) {
|
||||
tvherror("dbus", "Name error: %s", err.message);
|
||||
dbus_error_free(&err);
|
||||
dbus_connection_close(conn);
|
||||
dbus_connection_unref(conn);
|
||||
return NULL;
|
||||
}
|
||||
if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) {
|
||||
tvherror("dbus", "Not primary owner");
|
||||
dbus_connection_close(conn);
|
||||
dbus_connection_unref(conn);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -429,8 +432,9 @@ dbus_server_thread(void *aux)
|
|||
pthread_t dbus_tid;
|
||||
|
||||
void
|
||||
dbus_server_init(void)
|
||||
dbus_server_init(int session)
|
||||
{
|
||||
dbus_session = session;
|
||||
pthread_mutex_init(&dbus_lock, NULL);
|
||||
TAILQ_INIT(&dbus_signals);
|
||||
LIST_INIT(&dbus_rpcs);
|
||||
|
|
|
@ -39,7 +39,7 @@ void
|
|||
dbus_register_rpc_str(const char *call_name, void *opaque,
|
||||
char *(*fcn)(void *, const char *, char *));
|
||||
|
||||
void dbus_server_init(void);
|
||||
void dbus_server_init(int session);
|
||||
void dbus_server_start(void);
|
||||
void dbus_server_done(void);
|
||||
|
||||
|
@ -60,7 +60,7 @@ static inline void
|
|||
dbus_register_rpc_str(const char *call_name, void *opaque,
|
||||
char *(*fcn)(void *, const char *, char *)) { }
|
||||
|
||||
static inline void dbus_server_init(void) { }
|
||||
static inline void dbus_server_init(int session) { }
|
||||
static inline void dbus_server_start(void) { }
|
||||
static inline void dbus_server_done(void) { }
|
||||
|
||||
|
|
|
@ -471,7 +471,8 @@ main(int argc, char **argv)
|
|||
opt_ipv6 = 0,
|
||||
opt_tsfile_tuner = 0,
|
||||
opt_dump = 0,
|
||||
opt_xspf = 0;
|
||||
opt_xspf = 0,
|
||||
opt_dbus_session = 0;
|
||||
const char *opt_config = NULL,
|
||||
*opt_user = NULL,
|
||||
*opt_group = NULL,
|
||||
|
@ -504,6 +505,10 @@ main(int argc, char **argv)
|
|||
"to your Tvheadend installation until you edit\n"
|
||||
"the access-control from within the Tvheadend UI",
|
||||
OPT_BOOL, &opt_firstrun },
|
||||
#if ENABLE_DBUS_1
|
||||
{ 'e', "dbus_session", "DBus - use the session message bus instead system one",
|
||||
OPT_BOOL, &opt_dbus_session },
|
||||
#endif
|
||||
#if ENABLE_LINUXDVB
|
||||
{ 'a', "adapters", "Only use specified DVB adapters (comma separated)",
|
||||
OPT_STR, &opt_dvb_adapters },
|
||||
|
@ -768,7 +773,7 @@ main(int argc, char **argv)
|
|||
* Initialize subsystems
|
||||
*/
|
||||
|
||||
dbus_server_init();
|
||||
dbus_server_init(opt_dbus_session);
|
||||
|
||||
intlconv_init();
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue