]> git.sesse.net Git - vlc/blobdiff - activex/viewobject.cpp
all: clean-up, bug fixes so that plugin is now working correctly with Visual Basic...
[vlc] / activex / viewobject.cpp
index a0c51138e5317c8e33caf1d5de1df413f1d008c0..4cd39c4bebbf7944b3a49acb3ed142995985a8b5 100644 (file)
@@ -33,15 +33,12 @@ STDMETHODIMP VLCViewObject::Draw(DWORD dwAspect, LONG lindex, PVOID pvAspect,
 {
     if( dwAspect & DVASPECT_CONTENT )
     {
-        if( _p_instance->getVisible() )
-        {
-            RECT bounds;
-            bounds.left   = lprcBounds->left;
-            bounds.top    = lprcBounds->top;
-            bounds.right  = lprcBounds->right;
-            bounds.bottom = lprcBounds->bottom;
-            _p_instance->onPaint(hdcDraw, bounds, bounds);
-        }
+        RECT bounds;
+        bounds.left   = lprcBounds->left;
+        bounds.top    = lprcBounds->top;
+        bounds.right  = lprcBounds->right;
+        bounds.bottom = lprcBounds->bottom;
+        _p_instance->onPaint(hdcDraw, bounds, bounds);
         return S_OK;
     }
     return E_NOTIMPL;
@@ -84,21 +81,22 @@ STDMETHODIMP VLCViewObject::GetColorSet(DWORD dwAspect, LONG lindex,
 STDMETHODIMP VLCViewObject::SetAdvise(DWORD dwAspect, DWORD advf,
         LPADVISESINK pAdvSink)
 {
-    _dwAspect = dwAspect;
-    _advf = advf;
+
+    if( NULL != pAdvSink )
+        pAdvSink->AddRef();
+
     if( NULL != _pAdvSink )
         _pAdvSink->Release();
 
+    _dwAspect = dwAspect;
+    _advf = advf;
     _pAdvSink = pAdvSink;
-    if( NULL != pAdvSink )
-    {
-        pAdvSink->AddRef();
 
-        if( dwAspect & DVASPECT_CONTENT )
-        {
-            pAdvSink->OnViewChange(DVASPECT_CONTENT, -1);
-        }
+    if( (dwAspect & DVASPECT_CONTENT) && (advf & ADVF_PRIMEFIRST) && (NULL != _pAdvSink) )
+    {
+        _pAdvSink->OnViewChange(DVASPECT_CONTENT, -1);
     }
+
     return S_OK;
 };