From 64c34d24fd12b5a235e6da7b095b25961423230d Mon Sep 17 00:00:00 2001 From: David Quintana Date: Wed, 5 Mar 2014 13:14:51 +0000 Subject: [PATCH] [RSHELL] * CMenuSite: Reworked the code to avoid SHIsSameObject, since newer versions of windows do not implement that function. The code should be equivalent, and does less unnecessary calls to QueryInterface. CORE-7879 svn path=/branches/shell-experiments/; revision=62432 --- base/shell/rshell/CMenuSite.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/base/shell/rshell/CMenuSite.cpp b/base/shell/rshell/CMenuSite.cpp index 367909c6e87..d824d63e2a7 100644 --- a/base/shell/rshell/CMenuSite.cpp +++ b/base/shell/rshell/CMenuSite.cpp @@ -103,7 +103,11 @@ HRESULT STDMETHODCALLTYPE CMenuSite::AddBand(IUnknown * punk) #define TO_HRESULT(x) ((HRESULT)(S_OK+(x))) - if (SHIsSameObject(punk, m_BandObject)) + CComPtr pUnknown; + + punk->QueryInterface(IID_PPV_ARG(IUnknown, &pUnknown)); + + if (pUnknown == m_BandObject) return TO_HRESULT(0); if (m_BandObject) @@ -118,28 +122,26 @@ HRESULT STDMETHODCALLTYPE CMenuSite::AddBand(IUnknown * punk) m_WinEventHandler = NULL; m_hWndBand = NULL; - if (!punk) + if (!pUnknown) return TO_HRESULT(0); - hr = punk->QueryInterface(IID_PPV_ARG(IDeskBand, &m_DeskBand)); + hr = pUnknown->QueryInterface(IID_PPV_ARG(IDeskBand, &m_DeskBand)); if (FAILED_UNEXPECTEDLY(hr)) return hr; - hr = punk->QueryInterface(IID_PPV_ARG(IWinEventHandler, &m_WinEventHandler)); + hr = pUnknown->QueryInterface(IID_PPV_ARG(IWinEventHandler, &m_WinEventHandler)); if (FAILED_UNEXPECTEDLY(hr)) return hr; - hr = IUnknown_SetSite(punk, this->ToIUnknown()); + hr = IUnknown_SetSite(pUnknown, this->ToIUnknown()); if (FAILED_UNEXPECTEDLY(hr)) return hr; - hr = IUnknown_GetWindow(punk, &m_hWndBand); + hr = IUnknown_GetWindow(pUnknown, &m_hWndBand); if (FAILED_UNEXPECTEDLY(hr)) return hr; - m_BandObject = punk; - - punk->AddRef(); + m_BandObject = pUnknown; return TO_HRESULT(0); }