static GstStateChangeReturn gst_mikmod_change_state (GstElement * element, GstStateChange transition) { GstMikMod *mikmod; g_return_val_if_fail (GST_IS_MIKMOD (element), GST_STATE_CHANGE_FAILURE); mikmod = GST_MIKMOD (element); GST_DEBUG ("state pending %d", GST_STATE_PENDING (element)); if (GST_STATE_PENDING (element) == GST_STATE_READY) { gst_mikmod_setup (mikmod); if (Player_Active ()) { Player_TogglePause (); Player_SetPosition (0); } mikmod->initialized = FALSE; } if (GST_STATE_PENDING (element) == GST_STATE_PLAYING) { if (Player_Active () && Player_Paused ()) Player_TogglePause (); else if (!Player_Active ()) Player_Start (module); } if (GST_STATE_PENDING (element) == GST_STATE_PAUSED) if (Player_Active () && !Player_Paused ()) Player_TogglePause (); if (GST_STATE_PENDING (element) == GST_STATE_NULL) MikMod_Exit (); if (GST_ELEMENT_CLASS (parent_class)->change_state) return GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); return GST_STATE_CHANGE_SUCCESS; }
void Mix_PauseMusic(void) { if (!Player_Paused()){ Player_TogglePause(); } }
void Mix_ResumeMusic(void) { if (Player_Paused()){ Player_TogglePause(); } }