X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fplaybackengine.C;fp=cinelerra-5.1%2Fcinelerra%2Fplaybackengine.C;h=917e0470b2fd19914e36215d9e8e32cd76d973c0;hp=fcbeeb1d083bc79df2b01ccf077eef8a3fc04ed3;hb=07af5297688e2f888e0a309eab76293093a003bb;hpb=53f919f88484c8611457fbcd552f6931218cc219 diff --git a/cinelerra-5.1/cinelerra/playbackengine.C b/cinelerra-5.1/cinelerra/playbackengine.C index fcbeeb1d..917e0470 100644 --- a/cinelerra-5.1/cinelerra/playbackengine.C +++ b/cinelerra-5.1/cinelerra/playbackengine.C @@ -41,6 +41,8 @@ #include "mainsession.h" #include "trackcanvas.h" #include "transportque.h" +#include "videodevice.h" +#include "vdevicex11.h" #include "vrender.h" @@ -412,11 +414,7 @@ void PlaybackEngine::run() // Start tracking after arming so the tracking position doesn't change. // The tracking for a single frame command occurs during PAUSE init_tracking(); - if( !command->single_frame() ) { - EDL *edl = command->get_edl(); - if( edl && edl->tracks->playable_video_tracks() ) - clear_output(); - } + clear_borders(); // Dispatch the command start_render_engine(); break; @@ -425,13 +423,22 @@ void PlaybackEngine::run() } } -void PlaybackEngine::clear_output() +void PlaybackEngine::clear_borders() { - BC_WindowBase *cwdw = output->get_canvas(); - if( !cwdw ) return; - cwdw->lock_window("PlaybackEngine::clear_output"); - output->clear(); - cwdw->unlock_window(); + EDL *edl = command->get_edl(); + if( render_engine ) { + PlaybackConfig *config = edl->session->playback_config; + if( config->vconfig->driver == PLAYBACK_X11_GL ) { + VDeviceBase *vdriver = render_engine->video->get_output_base(); + ((VDeviceX11*)vdriver)->clear_output(); + return; + } + } + BC_WindowBase *window = output->get_canvas(); + if( !window ) return; + window->lock_window("PlaybackEngine::clear_output"); + output->clear_borders(edl); + window->unlock_window(); } void PlaybackEngine::stop_playback(int wait_tracking)