コード例 #1
0
ファイル: xmrplayer.c プロジェクト: dereky7/xmradio
static gboolean
player_event_poll(XmrPlayer *player)
{
	PlayerEvent *event = g_async_queue_try_pop(player->priv->event_queue);
	if (event == NULL)
		return TRUE;
	
	switch(event->type)
	{
	case libvlc_MediaPlayerEncounteredError:
	{
		GError error = { 0 };
		error.message = (gchar *)libvlc_errmsg();

		g_signal_emit(player, signals[ERROR], 0, &error);
	}
		break;

	case libvlc_MediaPlayerBuffering:
	{
		g_signal_emit(player, signals[BUFFERING], 0, (guint)event->buffering);
	}
		break;

	case libvlc_MediaPlayerPlaying:
	case libvlc_MediaPlayerPaused:
	case libvlc_MediaPlayerStopped:
		g_signal_emit(player, signals[STATE_CHANGED], 0);
		break;

	case libvlc_MediaPlayerTimeChanged:
	{
		g_signal_emit(player, signals[TICK], 0, event->position, xmr_player_get_duration(player));
	}
		break;

	case libvlc_MediaPlayerEndReached:
		g_signal_emit(player, signals[EOS], 0, FALSE);
		break;
		
	default:
		break;
	}
	
	g_free(event);
	
	return TRUE;
}
コード例 #2
0
ファイル: xmrplayer.c プロジェクト: Juson/xmradio
static gboolean
tick_timeout(XmrPlayer *player)
{
	if (player->priv->playing)
	{
		gint64 position;
		gint64 duration;

		position = xmr_player_get_time(player);
		duration = xmr_player_get_duration(player);

		g_signal_emit(player, signals[TICK], 0, position, duration);
	}

	return TRUE;
}