From a59ccd047ab1fafc417e4f577e6c858442c348b8 Mon Sep 17 00:00:00 2001 From: lilo_booter Date: Thu, 6 May 2004 18:42:45 +0000 Subject: [PATCH] aspect ratio and locking git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@310 d19143bc-622f-0410-bfdd-b5b2a6649095 --- src/modules/sdl/consumer_sdl.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/modules/sdl/consumer_sdl.c b/src/modules/sdl/consumer_sdl.c index 0d483cf..07f483f 100644 --- a/src/modules/sdl/consumer_sdl.c +++ b/src/modules/sdl/consumer_sdl.c @@ -51,6 +51,7 @@ struct consumer_sdl_s int window_height; float aspect_ratio; float display_aspect; + double last_frame_aspect; int width; int height; int playing; @@ -407,10 +408,11 @@ static int consumer_play_video( consumer_sdl this, mlt_frame frame ) } } - if ( width != this->width || height != this->height ) + if ( width != this->width || height != this->height || this->last_frame_aspect != mlt_frame_get_aspect_ratio( frame ) ) { this->width = width; this->height = height; + this->last_frame_aspect = mlt_frame_get_aspect_ratio( frame ); changed = 1; } @@ -437,7 +439,7 @@ static int consumer_play_video( consumer_sdl this, mlt_frame frame ) else { // Use hardware scaler to normalise display aspect ratio - this->rect.w = frame_aspect / this_aspect * this->window_width + 0.5; + this->rect.w = frame_aspect / this_aspect * this->window_width; this->rect.h = this->window_height; if ( this->rect.w > this->window_width ) { @@ -473,7 +475,9 @@ static int consumer_play_video( consumer_sdl this, mlt_frame frame ) SDL_FreeYUVOverlay( this->sdl_overlay ); // open SDL window with video overlay, if possible + sdl_lock_display(); this->sdl_screen = SDL_SetVideoMode( this->window_width, this->window_height, 0, this->sdl_flags ); + sdl_unlock_display(); if ( this->sdl_screen != NULL ) { @@ -692,6 +696,9 @@ static int consumer_get_dimensions( int *width, int *height ) // Specify the SDL Version SDL_VERSION( &wm.version ); + // Lock the display + sdl_lock_display(); + // Get the wm structure if ( SDL_GetWMInfo( &wm ) == 1 ) { @@ -717,6 +724,9 @@ static int consumer_get_dimensions( int *width, int *height ) } } + // Unlock the display + sdl_lock_display(); + return changed; } -- 1.7.4.4