Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
dbus: add mpegts input subscription notifications
  • Loading branch information
perexg committed Aug 11, 2014
1 parent fc2776d commit 7e0d969
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions src/input/mpegts/mpegts_input.c
Expand Up @@ -24,6 +24,7 @@
#include "atomic.h"
#include "notify.h"
#include "idnode.h"
#include "dbus.h"

#include <pthread.h>
#include <assert.h>
Expand All @@ -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
* *************************************************************************/
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -957,17 +983,21 @@ 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));
mpegts_input_stream_status(mmi, &st);
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);
}

/* **************************************************************************
Expand Down

0 comments on commit 7e0d969

Please sign in to comment.