X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/557002cf8162a0073dbc7050732cb6d75e184148..c5e7a7d769a6ac2b9793591d02fc97c82fb7890a:/src/msw/mediactrl_am.cpp diff --git a/src/msw/mediactrl_am.cpp b/src/msw/mediactrl_am.cpp index b1529a5483..eb139307d5 100644 --- a/src/msw/mediactrl_am.cpp +++ b/src/msw/mediactrl_am.cpp @@ -47,7 +47,7 @@ #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif // disable "cast truncates constant value" for VARIANT_BOOL values @@ -56,26 +56,20 @@ #pragma warning (disable:4310) #endif -//--------------------------------------------------------------------------- -// MediaCtrl include -//--------------------------------------------------------------------------- +#if wxUSE_MEDIACTRL && wxUSE_ACTIVEX + #include "wx/mediactrl.h" -//--------------------------------------------------------------------------- -// Compilation guard -//--------------------------------------------------------------------------- -#if wxUSE_MEDIACTRL +#ifndef WX_PRECOMP + #include "wx/log.h" + #include "wx/dcclient.h" + #include "wx/timer.h" + #include "wx/math.h" // log10 & pow + #include "wx/stopwatch.h" +#endif -//--------------------------------------------------------------------------- -// WX Includes -//--------------------------------------------------------------------------- -#include "wx/log.h" // wxLogDebug -#include "wx/math.h" // log10 & pow #include "wx/msw/private.h" // user info and wndproc setting/getting -#include "wx/dcclient.h" -#include "wx/timer.h" #include "wx/dynlib.h" -#include "wx/stopwatch.h" //--------------------------------------------------------------------------- // wxActiveXContainer - includes all the COM-specific stuff we need @@ -1489,6 +1483,7 @@ public: LPAMGETERRORTEXT m_lpAMGetErrorText; wxString GetErrorString(HRESULT hrdsv); #endif // __WXDEBUG__ + wxEvtHandler* m_evthandler; friend class wxAMMediaEvtHandler; DECLARE_DYNAMIC_CLASS(wxAMMediaBackend) @@ -1572,12 +1567,14 @@ 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) { + m_evthandler = NULL; } //--------------------------------------------------------------------------- @@ -1596,7 +1593,11 @@ wxAMMediaBackend::~wxAMMediaBackend() if (GetMP()) GetMP()->Release(); - m_ctrl->PopEventHandler(true); + if (m_evthandler) + { + m_ctrl->RemoveEventHandler(m_evthandler); + delete m_evthandler; + } } } @@ -1688,7 +1689,8 @@ bool wxAMMediaBackend::CreateControl(wxControl* ctrl, wxWindow* parent, #endif ); // Connect for events - m_ctrl->PushEventHandler(new wxAMMediaEvtHandler(this)); + m_evthandler = new wxAMMediaEvtHandler(this); + m_ctrl->PushEventHandler(m_evthandler); // // Here we set up wx-specific stuff for the default @@ -1797,6 +1799,7 @@ bool wxAMMediaBackend::DoLoad(const wxString& location) return false; } + m_bestSize = wxDefaultSize; return true; } @@ -1810,10 +1813,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(); } @@ -2148,7 +2147,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; } //--------------------------------------------------------------------------- @@ -2263,7 +2277,4 @@ void wxAMMediaEvtHandler::OnActiveX(wxActiveXEvent& event) #include "wx/html/forcelnk.h" FORCE_LINK_ME(wxmediabackend_am) -//--------------------------------------------------------------------------- -// End wxMediaCtrl Compilation Guard and this file -//--------------------------------------------------------------------------- -#endif // wxUSE_MEDIACTRL \ No newline at end of file +#endif // wxUSE_MEDIACTRL && wxUSE_ACTIVEX