/** * 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; }
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; }