pthread_t dbus_tid;
void
-dbus_server_init(int session)
+dbus_server_init(int enabled, int session)
{
dbus_session = session;
pthread_mutex_init(&dbus_lock, NULL);
TAILQ_INIT(&dbus_signals);
LIST_INIT(&dbus_rpcs);
- tvh_pipe(O_NONBLOCK, &dbus_pipe);
- dbus_threads_init_default();
- dbus_running = 1;
- dbus_emit_signal_str("/main", "start", tvheadend_version);
+ if (enabled) {
+ tvh_pipe(O_NONBLOCK, &dbus_pipe);
+ dbus_threads_init_default();
+ dbus_running = 1;
+ dbus_emit_signal_str("/main", "start", tvheadend_version);
+ }
}
void
dbus_server_start(void)
{
- tvhthread_create(&dbus_tid, NULL, dbus_server_thread, NULL);
+ if (dbus_pipe.wr > 0)
+ tvhthread_create(&dbus_tid, NULL, dbus_server_thread, NULL);
}
void
dbus_emit_signal_str("/main", "stop", "bye");
dbus_running = 0;
- tvh_write(dbus_pipe.wr, "", 1);
- pthread_kill(dbus_tid, SIGTERM);
- pthread_join(dbus_tid, NULL);
+ if (dbus_pipe.wr > 0) {
+ tvh_write(dbus_pipe.wr, "", 1);
+ pthread_kill(dbus_tid, SIGTERM);
+ pthread_join(dbus_tid, NULL);
+ }
dbus_flush_queue(NULL);
while ((rpc = LIST_FIRST(&dbus_rpcs)) != NULL) {
LIST_REMOVE(rpc, link);
dbus_register_rpc_str(const char *call_name, void *opaque,
char *(*fcn)(void *, const char *, char *));
-void dbus_server_init(int session);
+void dbus_server_init(int enabled, int session);
void dbus_server_start(void);
void dbus_server_done(void);
dbus_register_rpc_str(const char *call_name, void *opaque,
char *(*fcn)(void *, const char *, char *)) { }
-static inline void dbus_server_init(int session) { }
+static inline void dbus_server_init(int enabled, int session) { }
static inline void dbus_server_start(void) { }
static inline void dbus_server_done(void) { }
opt_tsfile_tuner = 0,
opt_dump = 0,
opt_xspf = 0,
+ opt_dbus = 0,
opt_dbus_session = 0;
const char *opt_config = NULL,
*opt_user = NULL,
"the access-control from within the Tvheadend UI",
OPT_BOOL, &opt_firstrun },
#if ENABLE_DBUS_1
+ { 'U', "dbus", "Enable DBus",
+ OPT_BOOL, &opt_dbus },
{ 'e', "dbus_session", "DBus - use the session message bus instead system one",
OPT_BOOL, &opt_dbus_session },
#endif
* Initialize subsystems
*/
- dbus_server_init(opt_dbus_session);
+ dbus_server_init(opt_dbus, opt_dbus_session);
intlconv_init();