=== modified file 'libbase/rc.cpp'
--- libbase/rc.cpp	2009-07-21 17:43:34 +0000
+++ libbase/rc.cpp	2009-11-17 03:19:44 +0000
@@ -103,6 +103,7 @@
     _lcshmkey(0),
     _ignoreFSCommand(true),
     _quality(-1),
+    _forceExactFitScaling(false),
     _saveStreamingMedia(false),
     _saveLoadedMedia(false),
     _popups(true),
@@ -558,6 +559,9 @@
             ||
                  extractNumber(_quality, "quality", variable, value)
             ||
+                 extractSetting(_forceExactFitScaling, "forceExactFitScaling",
+                         variable, value)
+            ||
                  extractSetting(_saveLoadedMedia, "saveLoadedMedia",
                          variable, value)
             ||
@@ -720,6 +724,7 @@
     cmd << "streamsTimeout " << _streamsTimeout << endl <<
     cmd << "movieLibraryLimit " << _movieLibraryLimit << endl <<
     cmd << "quality " << _quality << endl <<    
+    cmd << "forceExactFitScaling " << _forceExactFitScaling << endl <<
     cmd << "delay " << _delay << endl <<
     cmd << "verbosity " << _verbosity << endl <<
     cmd << "solReadOnly " << _solreadonly << endl <<

=== modified file 'libbase/rc.h'
--- libbase/rc.h	2009-07-21 17:43:34 +0000
+++ libbase/rc.h	2009-11-17 03:23:18 +0000
@@ -275,6 +275,10 @@
     
     void ignoreFSCommand(bool value) { _ignoreFSCommand = value; }
     
+    bool forceExactFitScaling() const { return _forceExactFitScaling; }
+    
+    void forceExactFitScaling(bool value) { _forceExactFitScaling = value; }
+    
     void saveStreamingMedia(bool value) { _saveStreamingMedia = value; }
 
     bool saveStreamingMedia() const { return _saveStreamingMedia; }
@@ -539,6 +543,8 @@
 
     /// The quality to display SWFs in. -1 to allow the SWF to override.
     int _quality;
+    
+    bool _forceExactFitScaling;
 
     bool _saveStreamingMedia;
     

=== modified file 'libcore/movie_root.cpp'
--- libcore/movie_root.cpp	2009-11-15 14:33:03 +0000
+++ libcore/movie_root.cpp	2009-11-17 04:00:15 +0000
@@ -210,7 +210,14 @@
 movie_root::setRootMovie(Movie* movie)
 {
 	_rootMovie = movie;
-
+	
+	gnash::RcInitFile& rcfile = gnash::RcInitFile::getDefaultInstance();
+	
+    if (rcfile.forceExactFitScaling() == true) {
+        _scaleMode = exactFit;
+        callInterface("Stage.align");
+    }
+    
 	m_viewport_x0 = 0;
 	m_viewport_y0 = 0;
 	const movie_definition* md = movie->definition();
@@ -1315,28 +1327,34 @@
 
     bool notifyResize = false;
     
-    // If we go from or to noScale, we notify a resize
-    // if and only if display viewport is != then actual
-    // movie size. If there is not yet a _rootMovie (when scaleMode
-    // is passed as a parameter to the player), we also don't notify a 
-    // resize.
-    if (_rootMovie && (sm == noScale || _scaleMode == noScale)) {
-
-        const movie_definition* md = _rootMovie->definition();
-        log_debug("Going to or from scaleMode=noScale. Viewport:%dx%d "
-                "Def:%dx%d", m_viewport_width, m_viewport_height,
-                md->get_width_pixels(), md->get_height_pixels());
-
-        if ( m_viewport_width != md->get_width_pixels()
-             || m_viewport_height != md->get_height_pixels() )
-        {
-            notifyResize = true;
+    gnash::RcInitFile& rcfile = gnash::RcInitFile::getDefaultInstance();
+    
+    //If we're forcing ExactFit scaling do not allow to change.
+    if (rcfile.forceExactFitScaling() == false) {
+    
+        // If we go from or to noScale, we notify a resize
+        // if and only if display viewport is != then actual
+        // movie size. If there is not yet a _rootMovie (when scaleMode
+        // is passed as a parameter to the player), we also don't notify a 
+        // resize.
+        if (_rootMovie && (sm == noScale || _scaleMode == noScale)) {
+
+            const movie_definition* md = _rootMovie->definition();
+            log_debug("Going to or from scaleMode=noScale. Viewport:%dx%d "
+                    "Def:%dx%d", m_viewport_width, m_viewport_height,
+                    md->get_width_pixels(), md->get_height_pixels());
+
+            if ( m_viewport_width != md->get_width_pixels()
+                 || m_viewport_height != md->get_height_pixels() )
+            {
+                notifyResize = true;
+            }
         }
+        
+        _scaleMode = sm;
+        callInterface("Stage.align");    
     }
 
-    _scaleMode = sm;
-    callInterface("Stage.align");    
-
     if (notifyResize) {
         as_object* stage = getBuiltinObject(*this, NSV::PROP_iSTAGE);
         if (stage) {

