dbus: add mpegts input subscription notifications
This commit is contained in:
parent
fc2776d5f4
commit
7e0d9693f8
1 changed files with 30 additions and 0 deletions
|
@ -24,6 +24,7 @@
|
|||
#include "atomic.h"
|
||||
#include "notify.h"
|
||||
#include "idnode.h"
|
||||
#include "dbus.h"
|
||||
|
||||
#include <pthread.h>
|
||||
#include <assert.h>
|
||||
|
@ -33,6 +34,29 @@ SKEL_DECLARE(mpegts_pid_sub_skel, mpegts_pid_sub_t);
|
|||
static void
|
||||
mpegts_input_del_network ( mpegts_network_link_t *mnl );
|
||||
|
||||
/*
|
||||
* DBUS
|
||||
*/
|
||||
|
||||
static void
|
||||
mpegts_input_dbus_notify(mpegts_input_t *mi, int64_t subs)
|
||||
{
|
||||
#if ENABLE_DBUS_1
|
||||
char buf[256];
|
||||
htsmsg_t *msg;
|
||||
|
||||
if (mi->mi_dbus_subs == subs)
|
||||
return;
|
||||
mi->mi_dbus_subs = subs;
|
||||
msg = htsmsg_create_list();
|
||||
mi->mi_display_name(mi, buf, sizeof(buf));
|
||||
htsmsg_add_str(msg, NULL, buf);
|
||||
htsmsg_add_s64(msg, NULL, subs);
|
||||
snprintf(buf, sizeof(buf), "/input/mpegts/%s", idnode_uuid_as_str(&mi->ti_id));
|
||||
dbus_emit_signal(buf, "status", msg);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* **************************************************************************
|
||||
* Class definition
|
||||
* *************************************************************************/
|
||||
|
@ -411,6 +435,7 @@ mpegts_input_started_mux
|
|||
mmi->mmi_mux->mm_active = mmi;
|
||||
LIST_INSERT_HEAD(&mi->mi_mux_active, mmi, mmi_active_link);
|
||||
notify_reload("input_status");
|
||||
mpegts_input_dbus_notify(mi, 1);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -435,6 +460,7 @@ mpegts_input_stopped_mux
|
|||
s = LIST_NEXT(s, s_active_link);
|
||||
}
|
||||
notify_reload("input_status");
|
||||
mpegts_input_dbus_notify(mi, 0);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -957,6 +983,8 @@ mpegts_input_status_timer ( void *p )
|
|||
mpegts_input_t *mi = p;
|
||||
mpegts_mux_instance_t *mmi;
|
||||
htsmsg_t *e;
|
||||
int64_t subs = 0;
|
||||
|
||||
pthread_mutex_lock(&mi->mi_output_lock);
|
||||
LIST_FOREACH(mmi, &mi->mi_mux_active, mmi_active_link) {
|
||||
memset(&st, 0, sizeof(st));
|
||||
|
@ -964,10 +992,12 @@ mpegts_input_status_timer ( void *p )
|
|||
e = tvh_input_stream_create_msg(&st);
|
||||
htsmsg_add_u32(e, "update", 1);
|
||||
notify_by_msg("input_status", e);
|
||||
subs += st.subs_count;
|
||||
tvh_input_stream_destroy(&st);
|
||||
}
|
||||
pthread_mutex_unlock(&mi->mi_output_lock);
|
||||
gtimer_arm(&mi->mi_status_timer, mpegts_input_status_timer, mi, 1);
|
||||
mpegts_input_dbus_notify(mi, subs);
|
||||
}
|
||||
|
||||
/* **************************************************************************
|
||||
|
|
Loading…
Add table
Reference in a new issue