}
};
-HRESULT VLCPlugin::onInitNew(void)
+HRESULT VLCPlugin::onInit(BOOL isNew)
{
if( 0 == _i_vlc )
{
+#ifdef ACTIVEX_DEBUG
+ char *ppsz_argv[] = { "vlc", "-vvv", "--fast-mutex", "--win9x-cv-method=1" };
+#else
char *ppsz_argv[] = { "vlc", "-vv" };
+#endif
HKEY h_key;
DWORD i_type, i_data = MAX_PATH + 1;
char p_data[MAX_PATH + 1];
#endif
_i_vlc = VLC_Create();
-
+
if( VLC_Init(_i_vlc, sizeof(ppsz_argv)/sizeof(char*), ppsz_argv) )
{
VLC_Destroy(_i_vlc);
_i_vlc = 0;
return E_FAIL;
}
+
+ if( isNew )
+ {
+ /*
+ ** object has fully initialized,
+ ** try to activate in place if container is ready
+ */
+ LPOLECLIENTSITE pActiveSite;
+
+ if( SUCCEEDED(vlcOleObject->GetClientSite(&pActiveSite)) && (NULL != pActiveSite) )
+ {
+ vlcOleObject->DoVerb(OLEIVERB_INPLACEACTIVATE, NULL, pActiveSite, 0, NULL, NULL);
+ pActiveSite->Release();
+ }
+ }
return S_OK;
}
return E_UNEXPECTED;
};
-
+
+HRESULT VLCPlugin::onLoad(void)
+{
+ /*
+ ** object has fully initialized,
+ ** try to activate in place if container is ready
+ */
+ LPOLECLIENTSITE pActiveSite;
+
+ if( SUCCEEDED(vlcOleObject->GetClientSite(&pActiveSite)) && (NULL != pActiveSite) )
+ {
+ vlcOleObject->DoVerb(OLEIVERB_INPLACEACTIVATE, NULL, pActiveSite, 0, NULL, NULL);
+ pActiveSite->Release();
+ }
+ return S_OK;
+};
+
+HRESULT VLCPlugin::onClientSiteChanged(LPOLECLIENTSITE pActiveSite)
+{
+ if( NULL != pActiveSite )
+ {
+ /*
+ ** object is embedded in container
+ ** try to activate in place if it has initialized
+ */
+ if( _i_vlc )
+ {
+ vlcOleObject->DoVerb(OLEIVERB_INPLACEACTIVATE, NULL, pActiveSite, 0, NULL, NULL);
+ }
+ }
+ return S_OK;
+};
+
HRESULT VLCPlugin::onClose(DWORD dwSaveOption)
{
if( _i_vlc )