]> git.saurik.com Git - wxWidgets.git/commitdiff
Don't cache the best size until we get a non-zero value back from the
authorRobin Dunn <robin@alldunn.com>
Mon, 2 Oct 2006 16:18:20 +0000 (16:18 +0000)
committerRobin Dunn <robin@alldunn.com>
Mon, 2 Oct 2006 16:18:20 +0000 (16:18 +0000)
activeX control.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41566 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/mediactrl_am.cpp

index eb5701a245d716f4b2a7a22ac31a615d838a96cb..a719a058496bcaaf89fe01ca0d22b84de156645f 100644 (file)
@@ -1566,11 +1566,12 @@ wxString wxAMMediaBackend::GetErrorString(HRESULT hrdsv)
 wxAMMediaBackend::wxAMMediaBackend()
                  :m_pAX(NULL),
 #ifdef __WXWINCE__
-                  m_pWMP(NULL)
+                  m_pWMP(NULL),
 #else
                   m_pAM(NULL),
-                  m_pMP(NULL)
+                  m_pMP(NULL),
 #endif
+                  m_bestSize(wxDefaultSize)
 {
 }
 
@@ -1791,6 +1792,7 @@ bool wxAMMediaBackend::DoLoad(const wxString& location)
         return false;
     }
 
+    m_bestSize = wxDefaultSize;
     return true;
 }
 
@@ -1804,10 +1806,6 @@ bool wxAMMediaBackend::DoLoad(const wxString& location)
 //---------------------------------------------------------------------------
 void wxAMMediaBackend::FinishLoad()
 {
-    // Get the original video size
-    GetAM()->get_ImageSourceWidth((long*)&m_bestSize.x);
-    GetAM()->get_ImageSourceHeight((long*)&m_bestSize.y);
-
     NotifyMovieLoaded();
 }
 
@@ -2142,7 +2140,22 @@ void wxAMMediaBackend::DoGetDownloadProgress(wxLongLong* pLoadProgress,
 //---------------------------------------------------------------------------
 wxSize wxAMMediaBackend::GetVideoSize() const
 {
-    return m_bestSize;
+    if (m_bestSize == wxDefaultSize)
+    {
+        wxAMMediaBackend* self = wxConstCast(this, wxAMMediaBackend);
+        long w = 0;
+        long h = 0;
+
+        self->GetAM()->get_ImageSourceWidth(&w);
+        self->GetAM()->get_ImageSourceHeight(&h);
+
+        if (w != 0 && h != 0)
+            self->m_bestSize.Set(w, h);
+        else
+            return wxSize(0,0);
+    }
+
+   return m_bestSize;
 }
 
 //---------------------------------------------------------------------------