From: Guilhem Lavaux Date: Sun, 29 Aug 1999 14:40:11 +0000 (+0000) Subject: Start xanim only when we are ready to play X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/b83290c3ebf1a7dbd8d1ec9e6fad248f5684d7b1 Start xanim only when we are ready to play Renamed StartPlay in Play Added wxVideoBaseDriver::GetSize git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3521 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/utils/wxMMedia2/lib/sndwav.cpp b/utils/wxMMedia2/lib/sndwav.cpp index b4fa4faaa0..a5f863e1e8 100644 --- a/utils/wxMMedia2/lib/sndwav.cpp +++ b/utils/wxMMedia2/lib/sndwav.cpp @@ -233,8 +233,10 @@ FAIL_WITH(m_output->Write(&signature, 4).LastWrite() != 4, wxSOUND_INVSTRM); pcm->Signed(TRUE); pcm->SetOrder(wxLITTLE_ENDIAN); - if (!SetSoundFormat(*pcm)) + if (!SetSoundFormat(*pcm)) { + delete pcm; return FALSE; + } delete pcm; } diff --git a/utils/wxMMedia2/lib/vidbase.cpp b/utils/wxMMedia2/lib/vidbase.cpp index 629389b52c..6e0b1d9de5 100644 --- a/utils/wxMMedia2/lib/vidbase.cpp +++ b/utils/wxMMedia2/lib/vidbase.cpp @@ -83,9 +83,9 @@ wxFrame *wxVideoCreateFrame(wxVideoBaseDriver *vid_drv) vid_out->DynamicSize(TRUE); frame->Layout(); frame->Show(TRUE); - wxYield(); vid_drv->AttachOutput(*vid_out); + vid_drv->Play(); return frame; } diff --git a/utils/wxMMedia2/lib/vidbase.h b/utils/wxMMedia2/lib/vidbase.h index 2a3b69d259..dc42450f61 100644 --- a/utils/wxMMedia2/lib/vidbase.h +++ b/utils/wxMMedia2/lib/vidbase.h @@ -67,32 +67,39 @@ protected: public: friend class wxVideoOutput; - /// + // wxVideoBaseDriver(); - /// + // wxVideoBaseDriver(wxInputStream& str); - /// + // virtual ~wxVideoBaseDriver(); - /// + + // + virtual bool Play() = 0; + // + virtual bool Stop() = 0; + // virtual bool Pause() = 0; - /// + // virtual bool Resume() = 0; - /// + // virtual bool SetVolume(wxUint8 vol) = 0; - /// + // virtual bool Resize(wxUint16 w, wxUint16 h) = 0; + // + virtual bool GetSize(wxSize& size) const = 0; - /// + // virtual bool IsCapable(wxVideoType WXUNUSED(v_type)) { return FALSE; } - /// + // virtual void OnFinished() {} - /// + // virtual bool AttachOutput(wxVideoOutput& output); - /// + // virtual void DetachOutput(); }; diff --git a/utils/wxMMedia2/lib/vidxanm.cpp b/utils/wxMMedia2/lib/vidxanm.cpp index 09eebc2d57..2dff4c3c68 100644 --- a/utils/wxMMedia2/lib/vidxanm.cpp +++ b/utils/wxMMedia2/lib/vidxanm.cpp @@ -60,13 +60,13 @@ wxVideoXANIM::wxVideoXANIM(wxInputStream& str) wxVideoXANIM::~wxVideoXANIM() { if (m_xanim_started) - StopPlay(); + Stop(); delete m_internal; wxRemoveFile(m_filename); } -bool wxVideoXANIM::StartPlay() +bool wxVideoXANIM::Play() { if (!m_paused && m_xanim_started) return TRUE; @@ -75,7 +75,8 @@ bool wxVideoXANIM::StartPlay() return TRUE; } - if (SendCommand(" ")) { + // The movie starts with xanim + if (RestartXANIM()) { m_paused = FALSE; return TRUE; } @@ -100,15 +101,17 @@ bool wxVideoXANIM::Resume() return FALSE; } -void wxVideoXANIM::StopPlay() +bool wxVideoXANIM::Stop() { if (!m_xanim_started) - return; + return FALSE; SendCommand("q"); m_xanim_started = FALSE; m_paused = FALSE; + + return TRUE; } bool wxVideoXANIM::SetVolume(wxUint8 vol) @@ -127,6 +130,12 @@ bool wxVideoXANIM::Resize(wxUint16 WXUNUSED(w), wxUint16 WXUNUSED(h)) return FALSE; } +bool wxVideoXANIM::GetSize(wxSize& size) const +{ + // Not implemented + return FALSE; +} + bool wxVideoXANIM::IsCapable(wxVideoType v_type) { if (v_type == wxVIDEO_MSAVI || v_type == wxVIDEO_MPEG || @@ -142,7 +151,7 @@ bool wxVideoXANIM::AttachOutput(wxVideoOutput& out) if (!wxVideoBaseDriver::AttachOutput(out)) return FALSE; - return RestartXANIM(); + return TRUE; } void wxVideoXANIM::DetachOutput() @@ -229,7 +238,7 @@ bool wxVideoXANIM::RestartXANIM() // wxYield(); } -// m_paused = TRUE; + m_paused = FALSE; m_xanim_started = TRUE; return TRUE; diff --git a/utils/wxMMedia2/lib/vidxanm.h b/utils/wxMMedia2/lib/vidxanm.h index 86d6e13424..a224b8e354 100644 --- a/utils/wxMMedia2/lib/vidxanm.h +++ b/utils/wxMMedia2/lib/vidxanm.h @@ -45,13 +45,14 @@ public: wxVideoXANIM(wxInputStream& str); ~wxVideoXANIM(); - bool StartPlay(); + bool Play(); bool Pause(); bool Resume(); - void StopPlay(); + bool Stop(); bool SetVolume(wxUint8 vol); bool Resize(wxUint16 w, wxUint16 h); + bool GetSize(wxSize& size) const; bool IsCapable(wxVideoType v_type);