Commit 0aa628a2 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont Committed by Jean-Baptiste Kempf

qt4: fix COM leak and handle errors

(cherry picked from commit 39e4fad1bc929bb35a5353380b456e36f23ea1c4)
Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent 19816b86
...@@ -1254,37 +1254,41 @@ bool SPrefsPanel::addType( const char * psz_ext, QTreeWidgetItem* current, ...@@ -1254,37 +1254,41 @@ bool SPrefsPanel::addType( const char * psz_ext, QTreeWidgetItem* current,
return b_temp; return b_temp;
} }
void SPrefsPanel::assoDialog()
{
#if !defined(__IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__) #if !defined(__IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__)
#define __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__ #define __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__
const GUID IID_IApplicationAssociationRegistrationUI = {0x1f76a169,0xf994,0x40ac, {0x8f,0xc8,0x09,0x59,0xe8,0x87,0x47,0x10}}; const GUID IID_IApplicationAssociationRegistrationUI = {0x1f76a169,0xf994,0x40ac, {0x8f,0xc8,0x09,0x59,0xe8,0x87,0x47,0x10}};
const GUID CLSID_ApplicationAssociationRegistrationUI = { 0x1968106d,0xf3b5,0x44cf,{0x89,0x0e,0x11,0x6f,0xcb,0x9e,0xce,0xf1}}; const GUID CLSID_ApplicationAssociationRegistrationUI = { 0x1968106d,0xf3b5,0x44cf,{0x89,0x0e,0x11,0x6f,0xcb,0x9e,0xce,0xf1}};
#ifdef __cplusplus
interface IApplicationAssociationRegistrationUI : public IUnknown interface IApplicationAssociationRegistrationUI : public IUnknown
{ {
virtual HRESULT STDMETHODCALLTYPE LaunchAdvancedAssociationUI( virtual HRESULT STDMETHODCALLTYPE LaunchAdvancedAssociationUI(
LPCWSTR pszAppRegName) = 0; LPCWSTR pszAppRegName) = 0;
}; };
#endif /* __cplusplus */
#endif /* __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__ */ #endif /* __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__ */
IApplicationAssociationRegistrationUI *p_appassoc; void SPrefsPanel::assoDialog()
CoInitializeEx( NULL, COINIT_MULTITHREADED ); {
HRESULT hr;
if( S_OK == CoCreateInstance(CLSID_ApplicationAssociationRegistrationUI, hr = CoInitializeEx( NULL, COINIT_MULTITHREADED );
NULL, CLSCTX_INPROC_SERVER, if( SUCCEEDED(hr) )
IID_IApplicationAssociationRegistrationUI,
(void **)&p_appassoc) )
{ {
if(S_OK == p_appassoc->LaunchAdvancedAssociationUI(L"VLC" ) ) void *p;
hr = CoCreateInstance(CLSID_ApplicationAssociationRegistrationUI,
NULL, CLSCTX_INPROC_SERVER,
IID_IApplicationAssociationRegistrationUI, &p);
if( SUCCEEDED(hr) )
{ {
CoUninitialize(); IApplicationAssociationRegistrationUI *p_regui =
return; (IApplicationAssociationRegistrationUI *)p;
hr = p_regui->LaunchAdvancedAssociationUI(L"VLC" );
p_regui->Release();
} }
CoUninitialize();
} }
CoUninitialize(); if( SUCCEEDED(hr) )
return;
QDialog *d = new QDialog( this ); QDialog *d = new QDialog( this );
d->setWindowTitle( qtr( "File associations" ) ); d->setWindowTitle( qtr( "File associations" ) );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment