void CplayerDlg::OnLButtonDown(UINT nFlags, CPoint point) { if (point.y > m_rtClient.bottom - 8) { LONGLONG total = 1; player_getparam(g_hplayer, PARAM_MEDIA_DURATION, &total); player_seek(g_hplayer, total * point.x / m_rtClient.right); } else { if (!m_bPlayPause) player_pause(g_hplayer); else player_play(g_hplayer); m_bPlayPause = !m_bPlayPause; } CDialog::OnLButtonDown(nFlags, point); }
/* playerbackend_stop */ void playerbackend_stop(PlayerBackend * player) { char const cmd[] = "stop\n"; _playerbackend_command(player, cmd, sizeof(cmd) - 1); player_seek(player->player, 0); /* FIXME also needs a stopped state */ player_set_paused(player->player, FALSE); if(player->read_id != 0) { g_source_remove(player->read_id); player->read_id = 0; } if(player->timeout_id != 0) { g_source_remove(player->timeout_id); player->timeout_id = 0; } }
/* * Class: com_rockcarry_ffplayer_MediaPlayer * Method: nativeSeek * Signature: (JJ)V */ static void JNICALL nativeSeek(JNIEnv *env, jobject obj, jlong hplayer, jlong ms) { DO_USE_VAR(env); DO_USE_VAR(obj); player_seek((void*)hplayer, ms, SEEK_PRECISELY); }