int window_height;
float aspect_ratio;
float display_aspect;
+ double last_frame_aspect;
int width;
int height;
int playing;
}
}
- 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;
}
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 )
{
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 )
{
// Specify the SDL Version
SDL_VERSION( &wm.version );
+ // Lock the display
+ sdl_lock_display();
+
// Get the wm structure
if ( SDL_GetWMInfo( &wm ) == 1 )
{
}
}
+ // Unlock the display
+ sdl_lock_display();
+
return changed;
}