winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
April 2013
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
579 discussions
Start a n
N
ew thread
Daniel Lehman : ntdll: Use larger virtual heap for 64-bit.
by Alexandre Julliard
12 Apr '13
12 Apr '13
Module: wine Branch: master Commit: 12f3ac4f46d7aa774acea2eb8d0f2f72e2b93f8a URL:
http://source.winehq.org/git/wine.git/?a=commit;h=12f3ac4f46d7aa774acea2eb8…
Author: Daniel Lehman <dlehman(a)esri.com> Date: Thu Apr 11 16:04:00 2013 -0700 ntdll: Use larger virtual heap for 64-bit. --- dlls/ntdll/virtual.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index 7a07128..121071f 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -146,7 +146,7 @@ static const int is_win64 = (sizeof(void *) > sizeof(int)); #define VIRTUAL_DEBUG_DUMP_VIEW(view) \ do { if (TRACE_ON(virtual)) VIRTUAL_DumpView(view); } while (0) -#define VIRTUAL_HEAP_SIZE (4*1024*1024) +#define VIRTUAL_HEAP_SIZE (sizeof(void*)*1024*1024) static HANDLE virtual_heap; static void *preload_reserve_start;
1
0
0
0
Michael Stefaniuc : dplayx: Cleanup the DirectPlayLobby object creation.
by Alexandre Julliard
12 Apr '13
12 Apr '13
Module: wine Branch: master Commit: dc89f4faa5aef327622904d6683130759e19fc18 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=dc89f4faa5aef327622904d66…
Author: Michael Stefaniuc <mstefani(a)redhat.de> Date: Thu Apr 11 23:56:31 2013 +0200 dplayx: Cleanup the DirectPlayLobby object creation. --- dlls/dplayx/dpclassfactory.c | 2 +- dlls/dplayx/dplay_global.h | 2 +- dlls/dplayx/dplobby.c | 119 +++++++++++------------------------------ 3 files changed, 34 insertions(+), 89 deletions(-) diff --git a/dlls/dplayx/dpclassfactory.c b/dlls/dplayx/dpclassfactory.c index c64c5fc..6accab6 100644 --- a/dlls/dplayx/dpclassfactory.c +++ b/dlls/dplayx/dpclassfactory.c @@ -102,7 +102,7 @@ static const IClassFactoryVtbl cf_vt = { }; static IClassFactoryImpl dplay_cf = {{&cf_vt}, dplay_create}; -static IClassFactoryImpl dplaylobby_cf = {{&cf_vt}, DPL_CreateInterface}; +static IClassFactoryImpl dplaylobby_cf = {{&cf_vt}, dplobby_create}; /******************************************************************************* diff --git a/dlls/dplayx/dplay_global.h b/dlls/dplayx/dplay_global.h index 1255519..7fde277 100644 --- a/dlls/dplayx/dplay_global.h +++ b/dlls/dplayx/dplay_global.h @@ -207,7 +207,7 @@ extern HRESULT DP_SetSPPlayerData( IDirectPlayImpl *lpDP, DPID idPlayer, void *l extern LPVOID DPSP_CreateSPPlayerData(void) DECLSPEC_HIDDEN; extern HRESULT dplay_create( REFIID riid, void **ppv ) DECLSPEC_HIDDEN; -extern HRESULT DPL_CreateInterface( REFIID riid, LPVOID* ppvObj ) DECLSPEC_HIDDEN; +extern HRESULT dplobby_create( REFIID riid, void **ppv ) DECLSPEC_HIDDEN; extern HRESULT DPSP_CreateInterface( REFIID riid, void **ppvObj, IDirectPlayImpl *dp ) DECLSPEC_HIDDEN; extern HRESULT DPLSP_CreateInterface( REFIID riid, void **ppvObj, IDirectPlayImpl *dp ) DECLSPEC_HIDDEN; diff --git a/dlls/dplayx/dplobby.c b/dlls/dplayx/dplobby.c index 9cffd56..12444cc 100644 --- a/dlls/dplayx/dplobby.c +++ b/dlls/dplayx/dplobby.c @@ -98,10 +98,6 @@ static inline IDirectPlayLobbyImpl *impl_from_IDirectPlayLobby3A( IDirectPlayLob return CONTAINING_RECORD( iface, IDirectPlayLobbyImpl, IDirectPlayLobby3A_iface ); } -/* Forward declarations of virtual tables */ -static const IDirectPlayLobby3Vtbl directPlayLobby3WVT; -static const IDirectPlayLobby3Vtbl directPlayLobby3AVT; - static BOOL DPL_CreateLobby1( LPVOID lpDPL ) { IDirectPlayLobbyAImpl *This = lpDPL; @@ -134,76 +130,6 @@ static BOOL DPL_DestroyLobby1( LPVOID lpDPL ) return TRUE; } - -/* The COM interface for upversioning an interface - * We've been given a GUID (riid) and we need to replace the present - * interface with that of the requested interface. - * - * Snip from some Microsoft document: - * There are four requirements for implementations of QueryInterface (In these - * cases, "must succeed" means "must succeed barring catastrophic failure."): - * - * * The set of interfaces accessible on an object through - * IUnknown::QueryInterface must be static, not dynamic. This means that - * if a call to QueryInterface for a pointer to a specified interface - * succeeds the first time, it must succeed again, and if it fails the - * first time, it must fail on all subsequent queries. - * * It must be symmetric ~W if a client holds a pointer to an interface on - * an object, and queries for that interface, the call must succeed. - * * It must be reflexive ~W if a client holding a pointer to one interface - * queries successfully for another, a query through the obtained pointer - * for the first interface must succeed. - * * It must be transitive ~W if a client holding a pointer to one interface - * queries successfully for a second, and through that pointer queries - * successfully for a third interface, a query for the first interface - * through the pointer for the third interface must succeed. - */ -HRESULT DPL_CreateInterface - ( REFIID riid, LPVOID* ppvObj ) -{ - IDirectPlayLobbyImpl *This; - - TRACE( " for %s\n", debugstr_guid( riid ) ); - - This = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof( *This ) ); - if ( !This ) - return DPERR_OUTOFMEMORY; - - This->IDirectPlayLobby3_iface.lpVtbl = &directPlayLobby3WVT; - This->IDirectPlayLobby3A_iface.lpVtbl = &directPlayLobby3AVT; - - if ( IsEqualGUID( &IID_IUnknown, riid ) || IsEqualGUID( &IID_IDirectPlayLobby, riid ) || - IsEqualGUID( &IID_IDirectPlayLobby2, riid ) || IsEqualGUID( &IID_IDirectPlayLobby3, riid ) ) - *ppvObj = &This->IDirectPlayLobby3_iface; - else if ( IsEqualGUID( &IID_IDirectPlayLobbyA, riid ) || - IsEqualGUID( &IID_IDirectPlayLobby2A, riid ) || IsEqualGUID( &IID_IDirectPlayLobby3A, riid ) ) - *ppvObj = &This->IDirectPlayLobby3A_iface; - else - { - /* Unsupported interface */ - HeapFree( GetProcessHeap(), 0, *ppvObj ); - *ppvObj = NULL; - - return E_NOINTERFACE; - } - - /* Initialize it */ - if ( DPL_CreateLobby1( This ) ) - { - InitializeCriticalSection( &This->lock ); - This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": IDirectPlayLobbyImpl.lock"); - IDirectPlayLobby_AddRef( (LPDIRECTPLAYLOBBY)*ppvObj ); - return S_OK; - } - - /* Initialize failed, destroy it */ - DPL_DestroyLobby1( This ); - HeapFree( GetProcessHeap(), 0, This ); - - *ppvObj = NULL; - return DPERR_NOMEMORY; -} - static HRESULT WINAPI DPL_QueryInterface( IDirectPlayLobbyImpl *This, REFIID riid, void **ppvObj ) { TRACE("(%p)->(%s,%p)\n", This, debugstr_guid( riid ), ppvObj ); @@ -1526,7 +1452,7 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_WaitForConnectionSettings } -static const IDirectPlayLobby3Vtbl directPlayLobby3AVT = +static const IDirectPlayLobby3Vtbl dpl3A_vt = { IDirectPlayLobby3AImpl_QueryInterface, IDirectPlayLobby3AImpl_AddRef, @@ -1552,13 +1478,9 @@ static const IDirectPlayLobby3Vtbl directPlayLobby3AVT = /* Direct Play Lobby 3 (unicode) Virtual Table for methods */ /* Note: Hack so we can reuse the old functions without compiler warnings */ -#if !defined(__STRICT_ANSI__) && defined(__GNUC__) -# define XCAST(fun) (typeof(directPlayLobby3WVT.fun)) -#else # define XCAST(fun) (void*) -#endif -static const IDirectPlayLobby3Vtbl directPlayLobby3WVT = +static const IDirectPlayLobby3Vtbl dpl3_vt = { IDirectPlayLobby3Impl_QueryInterface, IDirectPlayLobby3Impl_AddRef, @@ -1584,12 +1506,35 @@ static const IDirectPlayLobby3Vtbl directPlayLobby3WVT = }; #undef XCAST +HRESULT dplobby_create( REFIID riid, void **ppv ) +{ + IDirectPlayLobbyImpl *obj; + HRESULT hr; + + TRACE( "(%s, %p)\n", debugstr_guid( riid ), ppv ); + + *ppv = NULL; + obj = HeapAlloc( GetProcessHeap(), 0, sizeof( *obj ) ); + if ( !obj ) + return DPERR_OUTOFMEMORY; + + obj->IDirectPlayLobby3_iface.lpVtbl = &dpl3_vt; + obj->IDirectPlayLobby3A_iface.lpVtbl = &dpl3A_vt; + obj->ulInterfaceRef = 1; + + InitializeCriticalSection( &obj->lock ); + obj->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": IDirectPlayLobbyImpl.lock"); + + if ( DPL_CreateLobby1( obj ) ) + hr = IDirectPlayLobby_QueryInterface( &obj->IDirectPlayLobby3_iface, riid, ppv ); + else + hr = DPERR_NOMEMORY; + IDirectPlayLobby_Release( &obj->IDirectPlayLobby3_iface ); + + return hr; +} + -/********************************************************* - * - * Direct Play Lobby Interface Implementation - * - *********************************************************/ /*************************************************************************** * DirectPlayLobbyCreateA (DPLAYX.4) @@ -1620,7 +1565,7 @@ HRESULT WINAPI DirectPlayLobbyCreateA( LPGUID lpGUIDDSP, return CLASS_E_NOAGGREGATION; } - return DPL_CreateInterface( &IID_IDirectPlayLobbyA, (void**)lplpDPL ); + return dplobby_create( &IID_IDirectPlayLobbyA, (void**)lplpDPL ); } /*************************************************************************** @@ -1653,5 +1598,5 @@ HRESULT WINAPI DirectPlayLobbyCreateW( LPGUID lpGUIDDSP, return CLASS_E_NOAGGREGATION; } - return DPL_CreateInterface( &IID_IDirectPlayLobby, (void**)lplpDPL ); + return dplobby_create( &IID_IDirectPlayLobby, (void**)lplpDPL ); }
1
0
0
0
Michael Stefaniuc : dplayx: Move the lock into the DirectPlayLobby object.
by Alexandre Julliard
12 Apr '13
12 Apr '13
Module: wine Branch: master Commit: d6345bacdcb2cd98a0d9f46f4c8760cdeac88a04 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=d6345bacdcb2cd98a0d9f46f4…
Author: Michael Stefaniuc <mstefani(a)redhat.de> Date: Thu Apr 11 23:54:45 2013 +0200 dplayx: Move the lock into the DirectPlayLobby object. --- dlls/dplayx/dplobby.c | 72 ++++++++++++++---------------------------------- 1 files changed, 21 insertions(+), 51 deletions(-) diff --git a/dlls/dplayx/dplobby.c b/dlls/dplayx/dplobby.c index 1335a6d..9cffd56 100644 --- a/dlls/dplayx/dplobby.c +++ b/dlls/dplayx/dplobby.c @@ -72,11 +72,6 @@ struct DPLMSG }; typedef struct DPLMSG* LPDPLMSG; -typedef struct tagDirectPlayLobbyIUnknownData -{ - CRITICAL_SECTION DPL_lock; -} DirectPlayLobbyIUnknownData; - typedef struct tagDirectPlayLobbyData { HKEY hkCallbackKeyHack; @@ -89,7 +84,7 @@ typedef struct IDirectPlayLobbyImpl IDirectPlayLobby3 IDirectPlayLobby3_iface; IDirectPlayLobby3A IDirectPlayLobby3A_iface; LONG ulInterfaceRef; - DirectPlayLobbyIUnknownData* unk; + CRITICAL_SECTION lock; DirectPlayLobbyData* dpl; } IDirectPlayLobbyImpl; @@ -107,33 +102,6 @@ static inline IDirectPlayLobbyImpl *impl_from_IDirectPlayLobby3A( IDirectPlayLob static const IDirectPlayLobby3Vtbl directPlayLobby3WVT; static const IDirectPlayLobby3Vtbl directPlayLobby3AVT; -static BOOL DPL_CreateIUnknown( LPVOID lpDPL ) -{ - IDirectPlayLobbyAImpl *This = lpDPL; - - This->unk = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof( *(This->unk) ) ); - if ( This->unk == NULL ) - { - return FALSE; - } - - InitializeCriticalSection( &This->unk->DPL_lock ); - This->unk->DPL_lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": IDirectPlayLobbyAImpl*->DirectPlayLobbyIUnknownData*->DPL_lock"); - - return TRUE; -} - -static BOOL DPL_DestroyIUnknown( LPVOID lpDPL ) -{ - IDirectPlayLobbyAImpl *This = lpDPL; - - This->unk->DPL_lock.DebugInfo->Spare[0] = 0; - DeleteCriticalSection( &This->unk->DPL_lock ); - HeapFree( GetProcessHeap(), 0, This->unk ); - - return TRUE; -} - static BOOL DPL_CreateLobby1( LPVOID lpDPL ) { IDirectPlayLobbyAImpl *This = lpDPL; @@ -220,15 +188,16 @@ HRESULT DPL_CreateInterface } /* Initialize it */ - if ( DPL_CreateIUnknown( This ) && DPL_CreateLobby1( This ) ) + if ( DPL_CreateLobby1( This ) ) { + InitializeCriticalSection( &This->lock ); + This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": IDirectPlayLobbyImpl.lock"); IDirectPlayLobby_AddRef( (LPDIRECTPLAYLOBBY)*ppvObj ); return S_OK; } /* Initialize failed, destroy it */ DPL_DestroyLobby1( This ); - DPL_DestroyIUnknown( This ); HeapFree( GetProcessHeap(), 0, This ); *ppvObj = NULL; @@ -285,7 +254,8 @@ static ULONG WINAPI DPL_Release( IDirectPlayLobbyImpl *This ) if( ulInterfaceRefCount == 0 ) { DPL_DestroyLobby1( This ); - DPL_DestroyIUnknown( This ); + This->lock.DebugInfo->Spare[0] = 0; + DeleteCriticalSection( &This->lock ); HeapFree( GetProcessHeap(), 0, This ); } @@ -790,17 +760,17 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_EnumLocalApplications( IDirectPlayL dplAppInfo.guidApplication = serviceProviderGUID; dplAppInfo.u.lpszAppNameA = subKeyName; - EnterCriticalSection( &This->unk->DPL_lock ); + EnterCriticalSection( &This->lock ); memcpy( &This->dpl->hkCallbackKeyHack, &hkServiceProvider, sizeof( hkServiceProvider ) ); if( !lpEnumLocalAppCallback( &dplAppInfo, lpContext, dwFlags ) ) { - LeaveCriticalSection( &This->unk->DPL_lock ); + LeaveCriticalSection( &This->lock ); break; } - LeaveCriticalSection( &This->unk->DPL_lock ); + LeaveCriticalSection( &This->lock ); } return DP_OK; @@ -824,14 +794,14 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_GetConnectionSettings( IDirectPlayL TRACE("(%p)->(0x%08x,%p,%p)\n", This, dwAppID, lpData, lpdwDataSize ); - EnterCriticalSection( &This->unk->DPL_lock ); + EnterCriticalSection( &This->lock ); hr = DPLAYX_GetConnectionSettingsA( dwAppID, lpData, lpdwDataSize ); - LeaveCriticalSection( &This->unk->DPL_lock ); + LeaveCriticalSection( &This->lock ); return hr; } @@ -847,14 +817,14 @@ static HRESULT WINAPI IDirectPlayLobbyWImpl_GetConnectionSettings TRACE("(%p)->(0x%08x,%p,%p)\n", This, dwAppID, lpData, lpdwDataSize ); - EnterCriticalSection( &This->unk->DPL_lock ); + EnterCriticalSection( &This->lock ); hr = DPLAYX_GetConnectionSettingsW( dwAppID, lpData, lpdwDataSize ); - LeaveCriticalSection( &This->unk->DPL_lock ); + LeaveCriticalSection( &This->lock ); return hr; } @@ -1060,7 +1030,7 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_RunApplication( IDirectPlayLobby3A FIXME( "Waiting lobby not being handled correctly\n" ); } - EnterCriticalSection( &This->unk->DPL_lock ); + EnterCriticalSection( &This->lock ); ZeroMemory( &enumData, sizeof( enumData ) ); enumData.This = This; @@ -1111,7 +1081,7 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_RunApplication( IDirectPlayLobby3A HeapFree( GetProcessHeap(), 0, enumData.lpszCommandLine ); HeapFree( GetProcessHeap(), 0, enumData.lpszCurrentDirectory ); - LeaveCriticalSection( &This->unk->DPL_lock ); + LeaveCriticalSection( &This->lock ); return DPERR_CANTCREATEPROCESS; } @@ -1131,7 +1101,7 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_RunApplication( IDirectPlayLobby3A if( hr != DP_OK ) { ERR( "SetConnectionSettings failure %s\n", DPLAYX_HresultToString( hr ) ); - LeaveCriticalSection( &This->unk->DPL_lock ); + LeaveCriticalSection( &This->lock ); return hr; } @@ -1146,7 +1116,7 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_RunApplication( IDirectPlayLobby3A DPLAYX_SetLobbyMsgThreadId( newProcessInfo.dwProcessId, This->dpl->dwMsgThread ); - LeaveCriticalSection( &This->unk->DPL_lock ); + LeaveCriticalSection( &This->lock ); /* Everything seems to have been set correctly, update the dwAppID */ *lpdwAppID = newProcessInfo.dwProcessId; @@ -1213,7 +1183,7 @@ static HRESULT WINAPI IDirectPlayLobbyWImpl_SetConnectionSettings TRACE("(%p)->(0x%08x,0x%08x,%p)\n", This, dwFlags, dwAppID, lpConn ); - EnterCriticalSection( &This->unk->DPL_lock ); + EnterCriticalSection( &This->lock ); hr = DPLAYX_SetConnectionSettingsW( dwFlags, dwAppID, lpConn ); @@ -1231,7 +1201,7 @@ static HRESULT WINAPI IDirectPlayLobbyWImpl_SetConnectionSettings hr = DPLAYX_SetConnectionSettingsW( dwFlags, dwAppID, lpConn ); } - LeaveCriticalSection( &This->unk->DPL_lock ); + LeaveCriticalSection( &This->lock ); return hr; } @@ -1244,7 +1214,7 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_SetConnectionSettings( IDirectPlayL TRACE("(%p)->(0x%08x,0x%08x,%p)\n", This, dwFlags, dwAppID, lpConn ); - EnterCriticalSection( &This->unk->DPL_lock ); + EnterCriticalSection( &This->lock ); hr = DPLAYX_SetConnectionSettingsA( dwFlags, dwAppID, lpConn ); @@ -1259,7 +1229,7 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_SetConnectionSettings( IDirectPlayL hr = DPLAYX_SetConnectionSettingsA( dwFlags, dwAppID, lpConn ); } - LeaveCriticalSection( &This->unk->DPL_lock ); + LeaveCriticalSection( &This->lock ); return hr; }
1
0
0
0
Michael Stefaniuc : dplayx: Add both interfaces to the DirectPlayLobby object and stop cloning the object .
by Alexandre Julliard
12 Apr '13
12 Apr '13
Module: wine Branch: master Commit: 1e22d293039ed284475ffe454c165d04997a319d URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1e22d293039ed284475ffe454…
Author: Michael Stefaniuc <mstefani(a)redhat.de> Date: Thu Apr 11 23:53:38 2013 +0200 dplayx: Add both interfaces to the DirectPlayLobby object and stop cloning the object. --- dlls/dplayx/dplobby.c | 79 +++++++++++++------------------------------ dlls/dplayx/tests/dplayx.c | 1 + 2 files changed, 25 insertions(+), 55 deletions(-) diff --git a/dlls/dplayx/dplobby.c b/dlls/dplayx/dplobby.c index 54d55d3..1335a6d 100644 --- a/dlls/dplayx/dplobby.c +++ b/dlls/dplayx/dplobby.c @@ -74,7 +74,6 @@ typedef struct DPLMSG* LPDPLMSG; typedef struct tagDirectPlayLobbyIUnknownData { - LONG ulObjRef; CRITICAL_SECTION DPL_lock; } DirectPlayLobbyIUnknownData; @@ -87,7 +86,8 @@ typedef struct tagDirectPlayLobbyData typedef struct IDirectPlayLobbyImpl { - const void *lpVtbl; + IDirectPlayLobby3 IDirectPlayLobby3_iface; + IDirectPlayLobby3A IDirectPlayLobby3A_iface; LONG ulInterfaceRef; DirectPlayLobbyIUnknownData* unk; DirectPlayLobbyData* dpl; @@ -95,12 +95,12 @@ typedef struct IDirectPlayLobbyImpl static inline IDirectPlayLobbyImpl *impl_from_IDirectPlayLobby3( IDirectPlayLobby3 *iface ) { - return (IDirectPlayLobbyImpl*)iface; /* What you gonna do? */ + return CONTAINING_RECORD( iface, IDirectPlayLobbyImpl, IDirectPlayLobby3_iface ); } static inline IDirectPlayLobbyImpl *impl_from_IDirectPlayLobby3A( IDirectPlayLobby3A *iface ) { - return (IDirectPlayLobbyImpl*)iface; /* What you gonna do? */ + return CONTAINING_RECORD( iface, IDirectPlayLobbyImpl, IDirectPlayLobby3A_iface ); } /* Forward declarations of virtual tables */ @@ -201,12 +201,15 @@ HRESULT DPL_CreateInterface if ( !This ) return DPERR_OUTOFMEMORY; + This->IDirectPlayLobby3_iface.lpVtbl = &directPlayLobby3WVT; + This->IDirectPlayLobby3A_iface.lpVtbl = &directPlayLobby3AVT; + if ( IsEqualGUID( &IID_IUnknown, riid ) || IsEqualGUID( &IID_IDirectPlayLobby, riid ) || IsEqualGUID( &IID_IDirectPlayLobby2, riid ) || IsEqualGUID( &IID_IDirectPlayLobby3, riid ) ) - This->lpVtbl = &directPlayLobby3WVT; + *ppvObj = &This->IDirectPlayLobby3_iface; else if ( IsEqualGUID( &IID_IDirectPlayLobbyA, riid ) || IsEqualGUID( &IID_IDirectPlayLobby2A, riid ) || IsEqualGUID( &IID_IDirectPlayLobby3A, riid ) ) - This->lpVtbl = &directPlayLobby3AVT; + *ppvObj = &This->IDirectPlayLobby3A_iface; else { /* Unsupported interface */ @@ -217,19 +220,16 @@ HRESULT DPL_CreateInterface } /* Initialize it */ - *ppvObj = This; - if ( DPL_CreateIUnknown( *ppvObj ) && - DPL_CreateLobby1( *ppvObj ) - ) + if ( DPL_CreateIUnknown( This ) && DPL_CreateLobby1( This ) ) { IDirectPlayLobby_AddRef( (LPDIRECTPLAYLOBBY)*ppvObj ); return S_OK; } /* Initialize failed, destroy it */ - DPL_DestroyLobby1( *ppvObj ); - DPL_DestroyIUnknown( *ppvObj ); - HeapFree( GetProcessHeap(), 0, *ppvObj ); + DPL_DestroyLobby1( This ); + DPL_DestroyIUnknown( This ); + HeapFree( GetProcessHeap(), 0, This ); *ppvObj = NULL; return DPERR_NOMEMORY; @@ -239,35 +239,16 @@ static HRESULT WINAPI DPL_QueryInterface( IDirectPlayLobbyImpl *This, REFIID rii { TRACE("(%p)->(%s,%p)\n", This, debugstr_guid( riid ), ppvObj ); - *ppvObj = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, - sizeof( *This ) ); - - if( *ppvObj == NULL ) - { - return DPERR_OUTOFMEMORY; - } - - CopyMemory( *ppvObj, This, sizeof( *This ) ); - (*(IDirectPlayLobbyAImpl**)ppvObj)->ulInterfaceRef = 0; - if ( IsEqualGUID( &IID_IUnknown, riid ) || IsEqualGUID( &IID_IDirectPlayLobby, riid ) || IsEqualGUID( &IID_IDirectPlayLobby2, riid ) || IsEqualGUID( &IID_IDirectPlayLobby3, riid ) ) - { - IDirectPlayLobby3WImpl *This = *ppvObj; - This->lpVtbl = &directPlayLobby3WVT; - } + *ppvObj = &This->IDirectPlayLobby3_iface; else if ( IsEqualGUID( &IID_IDirectPlayLobbyA, riid ) || IsEqualGUID( &IID_IDirectPlayLobby2A, riid ) || IsEqualGUID( &IID_IDirectPlayLobby3A, riid ) ) - { - IDirectPlayLobby3AImpl *This = *ppvObj; - This->lpVtbl = &directPlayLobby3AVT; - } + *ppvObj = &This->IDirectPlayLobby3A_iface; else { /* Unsupported interface */ - HeapFree( GetProcessHeap(), 0, *ppvObj ); *ppvObj = NULL; - return E_NOINTERFACE; } @@ -282,15 +263,11 @@ static HRESULT WINAPI DPL_QueryInterface( IDirectPlayLobbyImpl *This, REFIID rii */ static ULONG WINAPI DPL_AddRef( IDirectPlayLobbyImpl *This ) { - ULONG ulInterfaceRefCount, ulObjRefCount; - - ulObjRefCount = InterlockedIncrement( &This->unk->ulObjRef ); - ulInterfaceRefCount = InterlockedIncrement( &This->ulInterfaceRef ); + ULONG ulInterfaceRefCount = InterlockedIncrement( &This->ulInterfaceRef ); - TRACE( "ref count incremented to %u:%u for %p\n", - ulInterfaceRefCount, ulObjRefCount, This ); + TRACE( "ref count incremented to %u for %p\n", ulInterfaceRefCount, This ); - return ulObjRefCount; + return ulInterfaceRefCount; } /* @@ -300,24 +277,16 @@ static ULONG WINAPI DPL_AddRef( IDirectPlayLobbyImpl *This ) */ static ULONG WINAPI DPL_Release( IDirectPlayLobbyImpl *This ) { - ULONG ulInterfaceRefCount, ulObjRefCount; - - ulObjRefCount = InterlockedDecrement( &This->unk->ulObjRef ); - ulInterfaceRefCount = InterlockedDecrement( &This->ulInterfaceRef ); + ULONG ulInterfaceRefCount = InterlockedDecrement( &This->ulInterfaceRef ); - TRACE( "ref count decremented to %u:%u for %p\n", - ulInterfaceRefCount, ulObjRefCount, This ); + TRACE( "ref count decremented to %u for %p\n", ulInterfaceRefCount, This ); /* Deallocate if this is the last reference to the object */ - if( ulObjRefCount == 0 ) + if( ulInterfaceRefCount == 0 ) { DPL_DestroyLobby1( This ); DPL_DestroyIUnknown( This ); - } - - if( ulInterfaceRefCount == 0 ) - { - HeapFree( GetProcessHeap(), 0, This ); + HeapFree( GetProcessHeap(), 0, This ); } return ulInterfaceRefCount; @@ -403,7 +372,7 @@ static HRESULT DPL_ConnectEx } /* FIXME: Is it safe/correct to use appID of 0? */ - hr = IDirectPlayLobby_GetConnectionSettings( (LPDIRECTPLAYLOBBY)This, + hr = IDirectPlayLobby_GetConnectionSettings( &This->IDirectPlayLobby3_iface, 0, NULL, &dwConnSize ); if( hr != DPERR_BUFFERTOOSMALL ) { @@ -418,7 +387,7 @@ static HRESULT DPL_ConnectEx } /* FIXME: Is it safe/correct to use appID of 0? */ - hr = IDirectPlayLobby_GetConnectionSettings( (LPDIRECTPLAYLOBBY)This, + hr = IDirectPlayLobby_GetConnectionSettings( &This->IDirectPlayLobby3_iface, 0, lpConn, &dwConnSize ); if( FAILED( hr ) ) { diff --git a/dlls/dplayx/tests/dplayx.c b/dlls/dplayx/tests/dplayx.c index 1b871d0..6ed864c 100644 --- a/dlls/dplayx/tests/dplayx.c +++ b/dlls/dplayx/tests/dplayx.c @@ -6526,6 +6526,7 @@ static void test_COM_dplobby(void) IDirectPlayLobby_Release(dpl3A); IDirectPlayLobby_Release(dpl2); IDirectPlayLobby_Release(dpl2A); + IDirectPlayLobby_Release(dplA); IDirectPlayLobby_Release(dpl); refcount = IDirectPlayLobby_Release(dpl); ok(refcount == 0, "refcount == %u, expected 0\n", refcount);
1
0
0
0
Michael Stefaniuc : dplayx: Use separate QueryInterface, AddRef and Release methods for IDirectPlayLobby3 + 3A.
by Alexandre Julliard
12 Apr '13
12 Apr '13
Module: wine Branch: master Commit: 91ae663c5917956fe78b67aca1b58738775cf814 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=91ae663c5917956fe78b67aca…
Author: Michael Stefaniuc <mstefani(a)redhat.de> Date: Thu Apr 11 23:52:18 2013 +0200 dplayx: Use separate QueryInterface, AddRef and Release methods for IDirectPlayLobby3 + 3A. --- dlls/dplayx/dplobby.c | 81 +++++++++++++++++++++++++++++++----------------- 1 files changed, 52 insertions(+), 29 deletions(-) diff --git a/dlls/dplayx/dplobby.c b/dlls/dplayx/dplobby.c index f5c2e41..54d55d3 100644 --- a/dlls/dplayx/dplobby.c +++ b/dlls/dplayx/dplobby.c @@ -93,6 +93,11 @@ typedef struct IDirectPlayLobbyImpl DirectPlayLobbyData* dpl; } IDirectPlayLobbyImpl; +static inline IDirectPlayLobbyImpl *impl_from_IDirectPlayLobby3( IDirectPlayLobby3 *iface ) +{ + return (IDirectPlayLobbyImpl*)iface; /* What you gonna do? */ +} + static inline IDirectPlayLobbyImpl *impl_from_IDirectPlayLobby3A( IDirectPlayLobby3A *iface ) { return (IDirectPlayLobbyImpl*)iface; /* What you gonna do? */ @@ -230,12 +235,8 @@ HRESULT DPL_CreateInterface return DPERR_NOMEMORY; } -static HRESULT WINAPI DPL_QueryInterface -( LPDIRECTPLAYLOBBYA iface, - REFIID riid, - LPVOID* ppvObj ) +static HRESULT WINAPI DPL_QueryInterface( IDirectPlayLobbyImpl *This, REFIID riid, void **ppvObj ) { - IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; TRACE("(%p)->(%s,%p)\n", This, debugstr_guid( riid ), ppvObj ); *ppvObj = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, @@ -279,11 +280,9 @@ static HRESULT WINAPI DPL_QueryInterface * Simple procedure. Just increment the reference count to this * structure and return the new reference count. */ -static ULONG WINAPI DPL_AddRef -( LPDIRECTPLAYLOBBY iface ) +static ULONG WINAPI DPL_AddRef( IDirectPlayLobbyImpl *This ) { ULONG ulInterfaceRefCount, ulObjRefCount; - IDirectPlayLobbyWImpl *This = (IDirectPlayLobbyWImpl *)iface; ulObjRefCount = InterlockedIncrement( &This->unk->ulObjRef ); ulInterfaceRefCount = InterlockedIncrement( &This->ulInterfaceRef ); @@ -299,11 +298,9 @@ static ULONG WINAPI DPL_AddRef * If the object no longer has any reference counts, free up the associated * memory. */ -static ULONG WINAPI DPL_Release -( LPDIRECTPLAYLOBBYA iface ) +static ULONG WINAPI DPL_Release( IDirectPlayLobbyImpl *This ) { ULONG ulInterfaceRefCount, ulObjRefCount; - IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; ulObjRefCount = InterlockedDecrement( &This->unk->ulObjRef ); ulInterfaceRefCount = InterlockedDecrement( &This->ulInterfaceRef ); @@ -326,6 +323,44 @@ static ULONG WINAPI DPL_Release return ulInterfaceRefCount; } +static HRESULT WINAPI IDirectPlayLobby3AImpl_QueryInterface( IDirectPlayLobby3A *iface, REFIID riid, + void **ppv ) +{ + IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3A( iface ); + return DPL_QueryInterface( This, riid, ppv ); +} + +static HRESULT WINAPI IDirectPlayLobby3Impl_QueryInterface( IDirectPlayLobby3 *iface, REFIID riid, + void **ppv ) +{ + IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3( iface ); + return DPL_QueryInterface( This, riid, ppv ); +} + +static ULONG WINAPI IDirectPlayLobby3AImpl_AddRef(IDirectPlayLobby3A *iface) +{ + IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3A( iface ); + return DPL_AddRef( This ); +} + +static ULONG WINAPI IDirectPlayLobby3Impl_AddRef(IDirectPlayLobby3 *iface) +{ + IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3( iface ); + return DPL_AddRef( This ); +} + +static ULONG WINAPI IDirectPlayLobby3AImpl_Release(IDirectPlayLobby3A *iface) +{ + IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3A( iface ); + return DPL_Release( This ); +} + +static ULONG WINAPI IDirectPlayLobby3Impl_Release(IDirectPlayLobby3 *iface) +{ + IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3( iface ); + return DPL_Release( This ); +} + /******************************************************************** * @@ -1552,21 +1587,11 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_WaitForConnectionSettings } -/* Direct Play Lobby 3 (ascii) Virtual Table for methods */ - -/* Note: Hack so we can reuse the old functions without compiler warnings */ -#if !defined(__STRICT_ANSI__) && defined(__GNUC__) -# define XCAST(fun) (typeof(directPlayLobby3AVT.fun)) -#else -# define XCAST(fun) (void*) -#endif - static const IDirectPlayLobby3Vtbl directPlayLobby3AVT = { - XCAST(QueryInterface)DPL_QueryInterface, - XCAST(AddRef)DPL_AddRef, - XCAST(Release)DPL_Release, - + IDirectPlayLobby3AImpl_QueryInterface, + IDirectPlayLobby3AImpl_AddRef, + IDirectPlayLobby3AImpl_Release, IDirectPlayLobby3AImpl_Connect, IDirectPlayLobby3AImpl_CreateAddress, IDirectPlayLobby3AImpl_EnumAddress, @@ -1584,7 +1609,6 @@ static const IDirectPlayLobby3Vtbl directPlayLobby3AVT = IDirectPlayLobby3AImpl_UnregisterApplication, IDirectPlayLobby3AImpl_WaitForConnectionSettings }; -#undef XCAST /* Direct Play Lobby 3 (unicode) Virtual Table for methods */ @@ -1597,10 +1621,9 @@ static const IDirectPlayLobby3Vtbl directPlayLobby3AVT = static const IDirectPlayLobby3Vtbl directPlayLobby3WVT = { - XCAST(QueryInterface)DPL_QueryInterface, - XCAST(AddRef)DPL_AddRef, - XCAST(Release)DPL_Release, - + IDirectPlayLobby3Impl_QueryInterface, + IDirectPlayLobby3Impl_AddRef, + IDirectPlayLobby3Impl_Release, IDirectPlayLobby3Impl_Connect, XCAST(CreateAddress)IDirectPlayLobbyWImpl_CreateAddress, XCAST(EnumAddress)IDirectPlayLobbyWImpl_EnumAddress,
1
0
0
0
Michael Stefaniuc : dplayx: Introduce impl_from_IDirectPlayLobby3A().
by Alexandre Julliard
12 Apr '13
12 Apr '13
Module: wine Branch: master Commit: 9f10f092f6e6736d2861fdcc274356e0c8e1be14 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=9f10f092f6e6736d2861fdcc2…
Author: Michael Stefaniuc <mstefani(a)redhat.de> Date: Thu Apr 11 23:50:53 2013 +0200 dplayx: Introduce impl_from_IDirectPlayLobby3A(). --- dlls/dplayx/dplobby.c | 21 +++++++++++++-------- 1 files changed, 13 insertions(+), 8 deletions(-) diff --git a/dlls/dplayx/dplobby.c b/dlls/dplayx/dplobby.c index 7ea3e05..f5c2e41 100644 --- a/dlls/dplayx/dplobby.c +++ b/dlls/dplayx/dplobby.c @@ -93,6 +93,11 @@ typedef struct IDirectPlayLobbyImpl DirectPlayLobbyData* dpl; } IDirectPlayLobbyImpl; +static inline IDirectPlayLobbyImpl *impl_from_IDirectPlayLobby3A( IDirectPlayLobby3A *iface ) +{ + return (IDirectPlayLobbyImpl*)iface; /* What you gonna do? */ +} + /* Forward declarations of virtual tables */ static const IDirectPlayLobby3Vtbl directPlayLobby3WVT; static const IDirectPlayLobby3Vtbl directPlayLobby3AVT; @@ -497,7 +502,7 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_EnumAddress( IDirectPlayLobby3A *if LPDPENUMADDRESSCALLBACK lpEnumAddressCallback, const void *lpAddress, DWORD dwAddressSize, void *lpContext ) { - IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; + IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3A( iface ); TRACE("(%p)->(%p,%p,0x%08x,%p)\n", This, lpEnumAddressCallback, lpAddress, dwAddressSize, lpContext ); @@ -559,7 +564,7 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_EnumAddressTypes( IDirectPlayLobby3 LPDPLENUMADDRESSTYPESCALLBACK lpEnumAddressTypeCallback, REFGUID guidSP, void *lpContext, DWORD dwFlags ) { - IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; + IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3A( iface ); HKEY hkResult; LPCSTR searchSubKey = "SOFTWARE\\Microsoft\\DirectPlay\\Service Providers"; @@ -711,7 +716,7 @@ static HRESULT WINAPI IDirectPlayLobbyWImpl_EnumLocalApplications static HRESULT WINAPI IDirectPlayLobby3AImpl_EnumLocalApplications( IDirectPlayLobby3A *iface, LPDPLENUMLOCALAPPLICATIONSCALLBACK lpEnumLocalAppCallback, void *lpContext, DWORD dwFlags ) { - IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; + IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3A( iface ); HKEY hkResult; LPCSTR searchSubKey = "SOFTWARE\\Microsoft\\DirectPlay\\Applications"; @@ -810,7 +815,7 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_EnumLocalApplications( IDirectPlayL static HRESULT WINAPI IDirectPlayLobby3AImpl_GetConnectionSettings( IDirectPlayLobby3A *iface, DWORD dwAppID, void *lpData, DWORD *lpdwDataSize ) { - IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; + IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3A( iface ); HRESULT hr; TRACE("(%p)->(0x%08x,%p,%p)\n", This, dwAppID, lpData, lpdwDataSize ); @@ -860,7 +865,7 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_ReceiveLobbyMessage( IDirectPlayLob DWORD dwFlags, DWORD dwAppID, DWORD *lpdwMessageFlags, void *lpData, DWORD *lpdwDataSize ) { - IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; + IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3A( iface ); FIXME(":stub %p %08x %08x %p %p %p\n", This, dwFlags, dwAppID, lpdwMessageFlags, lpData, lpdwDataSize ); return DPERR_OUTOFMEMORY; @@ -1028,7 +1033,7 @@ static BOOL DPL_CreateAndSetLobbyHandles( DWORD dwDestProcessId, HANDLE hDestPro static HRESULT WINAPI IDirectPlayLobby3AImpl_RunApplication( IDirectPlayLobby3A *iface, DWORD dwFlags, DWORD *lpdwAppID, DPLCONNECTION *lpConn, HANDLE hReceiveEvent ) { - IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; + IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3A( iface ); HRESULT hr; RunApplicationEnumStruct enumData; char temp[200]; @@ -1230,7 +1235,7 @@ static HRESULT WINAPI IDirectPlayLobbyWImpl_SetConnectionSettings static HRESULT WINAPI IDirectPlayLobby3AImpl_SetConnectionSettings( IDirectPlayLobby3A *iface, DWORD dwFlags, DWORD dwAppID, DPLCONNECTION *lpConn ) { - IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; + IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3A( iface ); HRESULT hr; TRACE("(%p)->(0x%08x,0x%08x,%p)\n", This, dwFlags, dwAppID, lpConn ); @@ -1480,7 +1485,7 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_ConnectEx ( LPDIRECTPLAYLOBBY3A iface, DWORD dwFlags, REFIID riid, LPVOID* lplpDP, IUnknown* pUnk ) { - IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface ; + IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3A( iface ); return DPL_ConnectEx( This, dwFlags, riid, lplpDP, pUnk ); }
1
0
0
0
Michael Stefaniuc : dplayx: Assimilate the inherited methods into IDirectPlayLobby3A.
by Alexandre Julliard
12 Apr '13
12 Apr '13
Module: wine Branch: master Commit: 2c21bac66400adc11fff3dd0cd1ae1df4f461c6c URL:
http://source.winehq.org/git/wine.git/?a=commit;h=2c21bac66400adc11fff3dd0c…
Author: Michael Stefaniuc <mstefani(a)redhat.de> Date: Thu Apr 11 23:48:28 2013 +0200 dplayx: Assimilate the inherited methods into IDirectPlayLobby3A. --- dlls/dplayx/dplobby.c | 124 +++++++++++++++++-------------------------------- 1 files changed, 42 insertions(+), 82 deletions(-) diff --git a/dlls/dplayx/dplobby.c b/dlls/dplayx/dplobby.c index e09d6c8..7ea3e05 100644 --- a/dlls/dplayx/dplobby.c +++ b/dlls/dplayx/dplobby.c @@ -435,14 +435,9 @@ static HRESULT WINAPI IDirectPlayLobby3Impl_Connect( IDirectPlayLobby3 *iface, D * NOTE: It appears that this method is supposed to be really really stupid * with no error checking on the contents. */ -static HRESULT WINAPI IDirectPlayLobbyAImpl_CreateAddress -( LPDIRECTPLAYLOBBYA iface, - REFGUID guidSP, - REFGUID guidDataType, - LPCVOID lpData, - DWORD dwDataSize, - LPVOID lpAddress, - LPDWORD lpdwAddressSize ) +static HRESULT WINAPI IDirectPlayLobby3AImpl_CreateAddress( IDirectPlayLobby3A *iface, + REFGUID guidSP, REFGUID guidDataType, const void *lpData, DWORD dwDataSize, void *lpAddress, + DWORD *lpdwAddressSize ) { return DPL_CreateAddress( guidSP, guidDataType, lpData, dwDataSize, lpAddress, lpdwAddressSize, TRUE ); @@ -498,12 +493,9 @@ static HRESULT DPL_CreateAddress( * given callback function, with lpContext, for each of the chunks. * */ -static HRESULT WINAPI IDirectPlayLobbyAImpl_EnumAddress -( LPDIRECTPLAYLOBBYA iface, - LPDPENUMADDRESSCALLBACK lpEnumAddressCallback, - LPCVOID lpAddress, - DWORD dwAddressSize, - LPVOID lpContext ) +static HRESULT WINAPI IDirectPlayLobby3AImpl_EnumAddress( IDirectPlayLobby3A *iface, + LPDPENUMADDRESSCALLBACK lpEnumAddressCallback, const void *lpAddress, DWORD dwAddressSize, + void *lpContext ) { IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; @@ -563,12 +555,9 @@ HRESULT DPL_EnumAddress( LPDPENUMADDRESSCALLBACK lpEnumAddressCallback, LPCVOID * build the DirectPlay Address. * */ -static HRESULT WINAPI IDirectPlayLobbyAImpl_EnumAddressTypes -( LPDIRECTPLAYLOBBYA iface, - LPDPLENUMADDRESSTYPESCALLBACK lpEnumAddressTypeCallback, - REFGUID guidSP, - LPVOID lpContext, - DWORD dwFlags ) +static HRESULT WINAPI IDirectPlayLobby3AImpl_EnumAddressTypes( IDirectPlayLobby3A *iface, + LPDPLENUMADDRESSTYPESCALLBACK lpEnumAddressTypeCallback, REFGUID guidSP, void *lpContext, + DWORD dwFlags ) { IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; @@ -719,11 +708,8 @@ static HRESULT WINAPI IDirectPlayLobbyWImpl_EnumLocalApplications return DPERR_OUTOFMEMORY; } -static HRESULT WINAPI IDirectPlayLobbyAImpl_EnumLocalApplications -( LPDIRECTPLAYLOBBYA iface, - LPDPLENUMLOCALAPPLICATIONSCALLBACK lpEnumLocalAppCallback, - LPVOID lpContext, - DWORD dwFlags ) +static HRESULT WINAPI IDirectPlayLobby3AImpl_EnumLocalApplications( IDirectPlayLobby3A *iface, + LPDPLENUMLOCALAPPLICATIONSCALLBACK lpEnumLocalAppCallback, void *lpContext, DWORD dwFlags ) { IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; @@ -821,11 +807,8 @@ static HRESULT WINAPI IDirectPlayLobbyAImpl_EnumLocalApplications * the data structure to be allocated by our caller which can then * call this procedure/method again with a valid data pointer. */ -static HRESULT WINAPI IDirectPlayLobbyAImpl_GetConnectionSettings -( LPDIRECTPLAYLOBBYA iface, - DWORD dwAppID, - LPVOID lpData, - LPDWORD lpdwDataSize ) +static HRESULT WINAPI IDirectPlayLobby3AImpl_GetConnectionSettings( IDirectPlayLobby3A *iface, + DWORD dwAppID, void *lpData, DWORD *lpdwDataSize ) { IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; HRESULT hr; @@ -873,13 +856,9 @@ static HRESULT WINAPI IDirectPlayLobbyWImpl_GetConnectionSettings * application. All messages are queued until received. * */ -static HRESULT WINAPI IDirectPlayLobbyAImpl_ReceiveLobbyMessage -( LPDIRECTPLAYLOBBYA iface, - DWORD dwFlags, - DWORD dwAppID, - LPDWORD lpdwMessageFlags, - LPVOID lpData, - LPDWORD lpdwDataSize ) +static HRESULT WINAPI IDirectPlayLobby3AImpl_ReceiveLobbyMessage( IDirectPlayLobby3A *iface, + DWORD dwFlags, DWORD dwAppID, DWORD *lpdwMessageFlags, void *lpData, + DWORD *lpdwDataSize ) { IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; FIXME(":stub %p %08x %08x %p %p %p\n", This, dwFlags, dwAppID, lpdwMessageFlags, lpData, @@ -1046,12 +1025,8 @@ static BOOL DPL_CreateAndSetLobbyHandles( DWORD dwDestProcessId, HANDLE hDestPro * connect to a session. * */ -static HRESULT WINAPI IDirectPlayLobbyAImpl_RunApplication -( LPDIRECTPLAYLOBBYA iface, - DWORD dwFlags, - LPDWORD lpdwAppID, - LPDPLCONNECTION lpConn, - HANDLE hReceiveEvent ) +static HRESULT WINAPI IDirectPlayLobby3AImpl_RunApplication( IDirectPlayLobby3A *iface, + DWORD dwFlags, DWORD *lpdwAppID, DPLCONNECTION *lpConn, HANDLE hReceiveEvent ) { IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; HRESULT hr; @@ -1194,12 +1169,8 @@ static HRESULT WINAPI IDirectPlayLobbyWImpl_RunApplication * All messages are queued until received. * */ -static HRESULT WINAPI IDirectPlayLobbyAImpl_SendLobbyMessage -( LPDIRECTPLAYLOBBYA iface, - DWORD dwFlags, - DWORD dwAppID, - LPVOID lpData, - DWORD dwDataSize ) +static HRESULT WINAPI IDirectPlayLobby3AImpl_SendLobbyMessage( IDirectPlayLobby3A *iface, + DWORD flags, DWORD appid, void *data, DWORD size ) { FIXME(":stub\n"); return DPERR_OUTOFMEMORY; @@ -1256,11 +1227,8 @@ static HRESULT WINAPI IDirectPlayLobbyWImpl_SetConnectionSettings return hr; } -static HRESULT WINAPI IDirectPlayLobbyAImpl_SetConnectionSettings -( LPDIRECTPLAYLOBBYA iface, - DWORD dwFlags, - DWORD dwAppID, - LPDPLCONNECTION lpConn ) +static HRESULT WINAPI IDirectPlayLobby3AImpl_SetConnectionSettings( IDirectPlayLobby3A *iface, + DWORD dwFlags, DWORD dwAppID, DPLCONNECTION *lpConn ) { IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface; HRESULT hr; @@ -1292,11 +1260,8 @@ static HRESULT WINAPI IDirectPlayLobbyAImpl_SetConnectionSettings * Registers an event that will be set when a lobby message is received. * */ -static HRESULT WINAPI IDirectPlayLobbyAImpl_SetLobbyMessageEvent -( LPDIRECTPLAYLOBBYA iface, - DWORD dwFlags, - DWORD dwAppID, - HANDLE hReceiveEvent ) +static HRESULT WINAPI IDirectPlayLobby3AImpl_SetLobbyMessageEvent( IDirectPlayLobby3A *iface, + DWORD flags, DWORD appid, HANDLE event ) { FIXME(":stub\n"); return DPERR_OUTOFMEMORY; @@ -1324,12 +1289,9 @@ static HRESULT WINAPI IDirectPlayLobby2WImpl_CreateCompoundAddress return DPL_CreateCompoundAddress( lpElements, dwElementCount, lpAddress, lpdwAddressSize, FALSE ); } -static HRESULT WINAPI IDirectPlayLobby2AImpl_CreateCompoundAddress -( LPDIRECTPLAYLOBBY2A iface, - LPCDPCOMPOUNDADDRESSELEMENT lpElements, - DWORD dwElementCount, - LPVOID lpAddress, - LPDWORD lpdwAddressSize ) +static HRESULT WINAPI IDirectPlayLobby3AImpl_CreateCompoundAddress( IDirectPlayLobby3A *iface, + const DPCOMPOUNDADDRESSELEMENT *lpElements, DWORD dwElementCount, void *lpAddress, + DWORD *lpdwAddressSize ) { return DPL_CreateCompoundAddress( lpElements, dwElementCount, lpAddress, lpdwAddressSize, TRUE ); } @@ -1601,23 +1563,21 @@ static const IDirectPlayLobby3Vtbl directPlayLobby3AVT = XCAST(Release)DPL_Release, IDirectPlayLobby3AImpl_Connect, - XCAST(CreateAddress)IDirectPlayLobbyAImpl_CreateAddress, - XCAST(EnumAddress)IDirectPlayLobbyAImpl_EnumAddress, - XCAST(EnumAddressTypes)IDirectPlayLobbyAImpl_EnumAddressTypes, - XCAST(EnumLocalApplications)IDirectPlayLobbyAImpl_EnumLocalApplications, - XCAST(GetConnectionSettings)IDirectPlayLobbyAImpl_GetConnectionSettings, - XCAST(ReceiveLobbyMessage)IDirectPlayLobbyAImpl_ReceiveLobbyMessage, - XCAST(RunApplication)IDirectPlayLobbyAImpl_RunApplication, - XCAST(SendLobbyMessage)IDirectPlayLobbyAImpl_SendLobbyMessage, - XCAST(SetConnectionSettings)IDirectPlayLobbyAImpl_SetConnectionSettings, - XCAST(SetLobbyMessageEvent)IDirectPlayLobbyAImpl_SetLobbyMessageEvent, - - XCAST(CreateCompoundAddress)IDirectPlayLobby2AImpl_CreateCompoundAddress, - - IDirectPlayLobby3AImpl_ConnectEx, - IDirectPlayLobby3AImpl_RegisterApplication, - IDirectPlayLobby3AImpl_UnregisterApplication, - IDirectPlayLobby3AImpl_WaitForConnectionSettings + IDirectPlayLobby3AImpl_CreateAddress, + IDirectPlayLobby3AImpl_EnumAddress, + IDirectPlayLobby3AImpl_EnumAddressTypes, + IDirectPlayLobby3AImpl_EnumLocalApplications, + IDirectPlayLobby3AImpl_GetConnectionSettings, + IDirectPlayLobby3AImpl_ReceiveLobbyMessage, + IDirectPlayLobby3AImpl_RunApplication, + IDirectPlayLobby3AImpl_SendLobbyMessage, + IDirectPlayLobby3AImpl_SetConnectionSettings, + IDirectPlayLobby3AImpl_SetLobbyMessageEvent, + IDirectPlayLobby3AImpl_CreateCompoundAddress, + IDirectPlayLobby3AImpl_ConnectEx, + IDirectPlayLobby3AImpl_RegisterApplication, + IDirectPlayLobby3AImpl_UnregisterApplication, + IDirectPlayLobby3AImpl_WaitForConnectionSettings }; #undef XCAST
1
0
0
0
Dmitry Timoshkov : kernel32: TerminateProcess unlike NtTerminateProcess is supposed to fail with process == 0.
by Alexandre Julliard
12 Apr '13
12 Apr '13
Module: wine Branch: master Commit: 37f7e7ea0c57416e9eb39a884f9f5d9a7bdee0e1 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=37f7e7ea0c57416e9eb39a884…
Author: Dmitry Timoshkov <dmitry(a)baikal.ru> Date: Fri Apr 12 18:01:37 2013 +0900 kernel32: TerminateProcess unlike NtTerminateProcess is supposed to fail with process == 0. --- dlls/kernel32/process.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c index 93c0267..7abb732 100644 --- a/dlls/kernel32/process.c +++ b/dlls/kernel32/process.c @@ -2593,7 +2593,15 @@ DWORD WINAPI LoadModule( LPCSTR name, LPVOID paramBlock ) */ BOOL WINAPI TerminateProcess( HANDLE handle, DWORD exit_code ) { - NTSTATUS status = NtTerminateProcess( handle, exit_code ); + NTSTATUS status; + + if (!handle) + { + SetLastError( ERROR_INVALID_HANDLE ); + return FALSE; + } + + status = NtTerminateProcess( handle, exit_code ); if (status) SetLastError( RtlNtStatusToDosError(status) ); return !status; }
1
0
0
0
Dmitry Timoshkov : kernel32: Add a test for threads state when a process is being terminated.
by Alexandre Julliard
12 Apr '13
12 Apr '13
Module: wine Branch: master Commit: 521cf664d3172f948ae1eacb2ffbc9c2948539f5 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=521cf664d3172f948ae1eacb2…
Author: Dmitry Timoshkov <dmitry(a)baikal.ru> Date: Fri Apr 12 18:00:58 2013 +0900 kernel32: Add a test for threads state when a process is being terminated. --- dlls/kernel32/tests/loader.c | 459 +++++++++++++++++++++++++++++++++++++++++- include/wine/test.h | 6 + 2 files changed, 462 insertions(+), 3 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=521cf664d3172f948ae1e…
1
0
0
0
Dmitry Timoshkov : kernel32: Add a shared memory test.
by Alexandre Julliard
12 Apr '13
12 Apr '13
Module: wine Branch: master Commit: 54e2211db07d4036121a397040bb2b8c9177977b URL:
http://source.winehq.org/git/wine.git/?a=commit;h=54e2211db07d4036121a39704…
Author: Dmitry Timoshkov <dmitry(a)baikal.ru> Date: Fri Apr 12 18:00:10 2013 +0900 kernel32: Add a shared memory test. --- dlls/kernel32/tests/virtual.c | 48 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 48 insertions(+), 0 deletions(-) diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c index d02ca34..c0c1a89 100644 --- a/dlls/kernel32/tests/virtual.c +++ b/dlls/kernel32/tests/virtual.c @@ -2386,6 +2386,48 @@ static void test_mapping(void) DeleteFile(file_name); } +static void test_shared_memory(int is_child) +{ + HANDLE mapping; + LONG *p; + + SetLastError(0xdeadbef); + mapping = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 4096, "winetest_virtual.c"); + ok(mapping != 0, "CreateFileMapping error %d\n", GetLastError()); + if (is_child) + ok(GetLastError() == ERROR_ALREADY_EXISTS, "expected ERROR_ALREADY_EXISTS, got %d\n", GetLastError()); + + SetLastError(0xdeadbef); + p = MapViewOfFile(mapping, FILE_MAP_READ|FILE_MAP_WRITE, 0, 0, 4096); + ok(p != NULL, "MapViewOfFile error %d\n", GetLastError()); + + if (is_child) + { + ok(*p == 0x1a2b3c4d, "expected 0x1a2b3c4d in child, got %#x\n", *p); + } + else + { + char **argv; + char cmdline[MAX_PATH]; + PROCESS_INFORMATION pi; + STARTUPINFO si = { sizeof(si) }; + DWORD ret; + + *p = 0x1a2b3c4d; + + winetest_get_mainargs(&argv); + sprintf(cmdline, "\"%s\" virtual sharedmem", argv[0]); + ret = CreateProcess(argv[0], cmdline, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); + ok(ret, "CreateProcess(%s) error %d\n", cmdline, GetLastError()); + winetest_wait_child_process(pi.hProcess); + CloseHandle(pi.hThread); + CloseHandle(pi.hProcess); + } + + UnmapViewOfFile(p); + CloseHandle(mapping); +} + START_TEST(virtual) { int argc; @@ -2399,6 +2441,11 @@ START_TEST(virtual) Sleep(5000); /* spawned process runs for at most 5 seconds */ return; } + if (!strcmp(argv[2], "sharedmem")) + { + test_shared_memory(1); + return; + } while (1) { void *mem; @@ -2424,6 +2471,7 @@ START_TEST(virtual) pNtMapViewOfSection = (void *)GetProcAddress(GetModuleHandle("ntdll.dll"), "NtMapViewOfSection"); pNtUnmapViewOfSection = (void *)GetProcAddress(GetModuleHandle("ntdll.dll"), "NtUnmapViewOfSection"); + test_shared_memory(0); test_mapping(); test_CreateFileMapping_protection(); test_VirtualAlloc_protection();
1
0
0
0
← Newer
1
...
28
29
30
31
32
33
34
...
58
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Results per page:
10
25
50
100
200