Example #1
0
/**
 * ly_aud_play:
 *
 * Set pipeline to be PLAYING.
 *
 * Returns:	TRUE for success, others FALSE.
 */
gboolean
ly_aud_play()
{
	LyMdhMetadata *md=ly_pqm_get_current_md();
	if(!md)
		return FALSE;
	GstElement *play=ly_ppl_get_playbin();
	if(!play)
		return FALSE;

	GstState state;
	state=ly_aud_get_state();
	if(state!=GST_STATE_PAUSED)
	{
		g_object_set(G_OBJECT(play),"uri",md->uri,NULL);
		if(!gst_element_set_state(play,GST_STATE_PLAYING))
		{
			ly_mbs_put("file_missed", "core:aud", NULL);
			return FALSE;
		}
		if(md->flag==1)	//cue play
		{
			g_usleep(0.1*G_USEC_PER_SEC);
			ly_aud_set_position(0);
		}
	}
	else
	{
		if(!gst_element_set_state(play,GST_STATE_PLAYING))
		{
			ly_mbs_put("file_missed", "core:aud", NULL);
			return FALSE;
		}
	}
	ly_mbs_put("play", "core:aud", NULL);
	return TRUE;
}
Example #2
0
gboolean ly_3lrc_widget_on_seek_cb(GtkWidget * widget, GdkEventButton *event, gpointer data)
{
	LyMdhMetadata *md=ly_pqm_get_current_md();
	if(!md)
		return FALSE;
	
	int length=ly_lrc_get_length();
	if(length<=0)
		return FALSE;
		
	//GdkCursor *cursor;
	int index=0;
	if (event->button == 1)
	{
		switch(event->type)
		{
			case GDK_BUTTON_PRESS:
				flag_seek=TRUE;
				ly_3lrc_widget_pos_old[X] = event->x;
				ly_3lrc_widget_pos_old[Y] = event->y;
				index_mark=ly_lrc_get_index();
				break;
			case GDK_BUTTON_RELEASE:
				if(flag_seek==TRUE&&flag_seeked==TRUE)
				{
					LyLrcLyric **array=ly_lrc_get_array();
					index=ly_lrc_get_index();
					ly_aud_set_position(array[index]->time/(double)ly_mdh_time_str2int(md->duration));
				}
				flag_seek = FALSE;
				flag_seeked=FALSE;
				ly_lrc_set_update_state(TRUE);

				break;
			default:
				break;
		}
	}
	if(flag_seek)
	{
		int pos[2]={0,0};
		gtk_widget_get_pointer(widget, &pos[X], &pos[Y]);
		ly_3lrc_widget_pos_delta[Y]=pos[Y]-ly_3lrc_widget_pos_old[Y];
		if(pos[Y]-ly_3lrc_widget_pos_old[Y])
			flag_seeked=TRUE;
			ly_lrc_set_update_state(FALSE);
	}
	if(flag_seek&&flag_seeked)
	{
		gint lrc_gap=20;
		if(!ly_reg_get("lrc_gap","%d",&lrc_gap))
		{
			ly_reg_set("lrc_gap","%d",lrc_gap);
		}
		index=index_mark;
		if(ly_3lrc_widget_pos_delta[Y]>=0)
		{
			index-=(int)(abs(ly_3lrc_widget_pos_delta[Y])/lrc_gap);
			if(index<0)
			{
				index=0;
			}
		}
		else
		{
			index+=(int)(abs(ly_3lrc_widget_pos_delta[Y])/lrc_gap);
			if(index>=length)
			{
				index=length-1;
			}
		}
		ly_lrc_set_index(index);
	}
	return FALSE;
}