From 4ce7a487480cd5dc9effc531b9846b7bee83e766 Mon Sep 17 00:00:00 2001 From: reimar Date: Fri, 28 Aug 2009 13:25:30 +0000 Subject: [PATCH] Move aspect change handling from vo_quartz to osx_common. This could probably be even moved to video_out, though the names should be improved. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29574 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libvo/osx_common.c | 28 ++++++++++++++++++++++++++++ libvo/osx_common.h | 2 ++ libvo/vo_quartz.c | 16 ++++------------ 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/libvo/osx_common.c b/libvo/osx_common.c index da340438fc..aa1de118f0 100644 --- a/libvo/osx_common.c +++ b/libvo/osx_common.c @@ -43,3 +43,31 @@ int convert_key(unsigned key, unsigned charcode) return mpkey; return charcode; } + +static int our_aspect_change; +static float old_movie_aspect; + +/** + * Sends MPlayer a command to change aspect to the requested value. + * @param new_aspect desired new aspect, < 0 means restore original. + */ +void change_movie_aspect(float new_aspect) +{ + char cmd_str[64]; + if (new_aspect < 0) + new_aspect = old_movie_aspect; + our_aspect_change = 1; + snprintf(cmd_str, 64, "switch_ratio %f", old_movie_aspect); + mp_input_queue_cmd(mp_input_parse_cmd(cmd_str)); +} + +/** + * Call in config to save the original movie aspect. + * This will ignore config calls caused by change_movie_aspect. + */ +void config_movie_aspect(float config_aspect) +{ + if (!our_aspect_change) + old_movie_aspect = config_aspect; + our_aspect_change = 0; +} diff --git a/libvo/osx_common.h b/libvo/osx_common.h index 2f3a13b77b..ce598240c2 100644 --- a/libvo/osx_common.h +++ b/libvo/osx_common.h @@ -1 +1,3 @@ int convert_key(unsigned key, unsigned charcode); +void change_movie_aspect(float new_aspect); +void config_movie_aspect(float config_aspect); diff --git a/libvo/vo_quartz.c b/libvo/vo_quartz.c index c9fc1d2851..3ca371be9f 100644 --- a/libvo/vo_quartz.c +++ b/libvo/vo_quartz.c @@ -87,8 +87,6 @@ static int EnterMoviesDone = 0; static int get_image_done = 0; static int vo_quartz_fs; // we are in fullscreen -static int our_aspect_change; -static float old_movie_aspect; static int winLevel = 1; int levelList[] = @@ -420,19 +418,15 @@ static OSStatus WindowEventHandler(EventHandlerCallRef nextHandler, EventRef eve break; case kAspectOrgCmd: - our_aspect_change = 1; - sprintf(cmd_str, "switch_ratio %f", old_movie_aspect); - mp_input_queue_cmd(mp_input_parse_cmd(cmd_str)); + change_movie_aspect(-1); break; case kAspectFullCmd: - our_aspect_change = 1; - mp_input_queue_cmd(mp_input_parse_cmd("switch_ratio 1.6667")); + change_movie_aspect(4.0 / 3.0); break; case kAspectWideCmd: - our_aspect_change = 1; - mp_input_queue_cmd(mp_input_parse_cmd("switch_ratio 1.7778")); + change_movie_aspect(16.0 / 9.0); break; case kPanScanCmd: @@ -615,9 +609,7 @@ static int config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_ OSErr qterr; CGRect tmpBounds; - if (!our_aspect_change) - old_movie_aspect = (float)d_width / d_height; - our_aspect_change = 0; + config_movie_aspect((float)d_width / d_height); // misc mplayer setup///////////////////////////////////////////////////// SetRect(&imgRect, 0, 0, width, height);