void FinishLoad();
wxSize m_bestSize; //Original movie size
+#ifdef __WXMAC_OSX__
struct MovieType** m_movie; //QT Movie handle/instance
+#else
+ Movie m_movie ;
+#endif
wxControl* m_ctrl; //Parent control
bool m_bVideo; //Whether or not we have video
class _wxQTTimer* m_timer; //Timer for streaming the movie
if ( !
#if wxUSE_CREATEMOVIECONTROL
- ctrl->wxControl::Create(parent, id, pos, size,
- m_ctrl->MacRemoveBordersFromStyle(style),
- validator, name)
-#else
ctrl->wxWindow::Create(parent, id, pos, size,
m_ctrl->MacRemoveBordersFromStyle(style),
name)
+#else
+ ctrl->wxControl::Create(parent, id, pos, size,
+ m_ctrl->MacRemoveBordersFromStyle(style),
+ validator, name)
#endif
)
return false;
+#if wxUSE_VALIDATORS
+ ctrl->SetValidator(validator);
+#endif
+
m_ctrl = ctrl;
return true;
}
short movieResFile;
FSSpec sfFile;
+ //FIXME:wxMacFilename2FSSpec crashes on empty string -
+ //does it crash on other strings too and should this
+ //"fix" be put in the carbon wxSound?
+ if (fileName.empty())
+ return false;
+
wxMacFilename2FSSpec( fileName , &sfFile );
if (OpenMovieFile (&sfFile, &movieResFile, fsRdPerm) != noErr)
//Native CreateMovieControl QT control (Thanks to Kevin Olliver's
//wxQTMovie for some of this).
//
+ #define GetControlPeer(whatever) ctrl->m_peer
+ wxMediaCtrl* ctrl = (wxMediaCtrl*) m_ctrl;
Rect bounds = wxMacGetBoundsForControl(m_ctrl,
m_ctrl->GetPosition(),
m_ctrl->GetSize());
+
+ //Dispose of old control for new one
+ if (GetControlPeer(m_ctrl) && GetControlPeer(m_ctrl)->Ok() )
+ GetControlPeer(m_ctrl)->Dispose();
+
//Options-
//kMovieControlOptionXXX
//HideController - hide the movie controller
//ManuallyIdled - app handles movie idling rather than internal timer event loop
::CreateMovieControl(
(WindowRef)
- m_ctrl->MacGetTopLevelWindowRef(), //parent
+ ctrl->MacGetTopLevelWindowRef(), //parent
&bounds, //control bounds
m_movie, //movie handle
kMovieControlOptionHideController
| kMovieControlOptionSetKeysEnabled
// | kMovieControlOptionManuallyIdled
, //flags
- GetControlPeer(m_ctrl)->GetControlRefAddr() );
+ ctrl->m_peer->GetControlRefAddr() );
- ::EmbedControl(GetControlPeer(m_ctrl)->GetControlRef(),
- (ControlRef) m_ctrl->GetParent()->GetHandle());
+ ::EmbedControl(ctrl->m_peer->GetControlRef(), (ControlRef)ctrl->GetParent()->GetHandle());
#else
//
//"Emulation"
m_timer = NULL;
#if wxUSE_CREATEMOVIECONTROL
- DisposeControl(GetControlPeer(m_ctrl)->GetControlRef());
+ DisposeControl(((wxMediaCtrl*)m_ctrl)->m_peer->GetControlRef());
#endif
StopMovie(m_movie);
//---------------------------------------------------------------------------
// wxQTMediaBackend::Move
//
-// If not using a native 10.2 QT control performs some emulated window
-// movement stuff
+// We need to do this even when using native qt control because
+// CreateMovieControl is broken in this regard...
//---------------------------------------------------------------------------
void wxQTMediaBackend::Move(int x, int y, int w, int h)
{
::SetMovieBox(m_movie, &theRect);
wxASSERT(::GetMoviesError() == noErr);
}
+#else
+ if(m_timer && m_ctrl)
+ {
+ m_ctrl->GetParent()->MacWindowToRootWindow(&x, &y);
+
+ ::MoveControl( (ControlRef) m_ctrl->GetHandle(), x, y );
+ m_ctrl->GetParent()->Refresh();
+ m_ctrl->GetParent()->Update();
+ }
#endif
}
//in source file that contains stuff you don't directly use
-#include <wx/html/forcelnk.h>
+#include "wx/html/forcelnk.h"
FORCE_LINK_ME(basewxmediabackends);
#endif //wxUSE_MEDIACTRL