mirror of
https://github.com/godotengine/godot.git
synced 2025-04-07 00:44:24 +08:00
Merge pull request #37764 from KoBeWi/video_pauser
This commit is contained in:
commit
1c7971d11c
@ -174,6 +174,28 @@ void VideoStreamPlayer::_notification(int p_notification) {
|
||||
Size2 s = expand ? get_size() : texture->get_size();
|
||||
draw_texture_rect(texture, Rect2(Point2(), s), false);
|
||||
} break;
|
||||
|
||||
case NOTIFICATION_PAUSED: {
|
||||
if (is_playing() && !is_paused()) {
|
||||
paused_from_tree = true;
|
||||
if (playback.is_valid()) {
|
||||
playback->set_paused(true);
|
||||
set_process_internal(false);
|
||||
}
|
||||
last_audio_time = 0;
|
||||
}
|
||||
} break;
|
||||
|
||||
case NOTIFICATION_UNPAUSED: {
|
||||
if (paused_from_tree) {
|
||||
paused_from_tree = false;
|
||||
if (playback.is_valid()) {
|
||||
playback->set_paused(false);
|
||||
set_process_internal(true);
|
||||
}
|
||||
last_audio_time = 0;
|
||||
}
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -255,6 +277,10 @@ void VideoStreamPlayer::play() {
|
||||
playback->play();
|
||||
set_process_internal(true);
|
||||
last_audio_time = 0;
|
||||
|
||||
if (!can_process()) {
|
||||
_notification(NOTIFICATION_PAUSED);
|
||||
}
|
||||
}
|
||||
|
||||
void VideoStreamPlayer::stop() {
|
||||
@ -281,6 +307,14 @@ bool VideoStreamPlayer::is_playing() const {
|
||||
|
||||
void VideoStreamPlayer::set_paused(bool p_paused) {
|
||||
paused = p_paused;
|
||||
if (!p_paused && !can_process()) {
|
||||
paused_from_tree = true;
|
||||
return;
|
||||
} else if (p_paused && paused_from_tree) {
|
||||
paused_from_tree = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (playback.is_valid()) {
|
||||
playback->set_paused(p_paused);
|
||||
set_process_internal(!p_paused);
|
||||
|
@ -60,6 +60,7 @@ class VideoStreamPlayer : public Control {
|
||||
int wait_resampler_limit = 2;
|
||||
|
||||
bool paused = false;
|
||||
bool paused_from_tree = false;
|
||||
bool autoplay = false;
|
||||
float volume = 1.0;
|
||||
double last_audio_time = 0.0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user