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
December 2005
----- 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
3 participants
452 discussions
Start a n
N
ew thread
H. Verbeet : wined3d: Don't change the shader's refcount in SetVertexShader and
by Alexandre Julliard
13 Dec '05
13 Dec '05
Module: wine Branch: refs/heads/master Commit: 6077c63feb2e0d70a077fbda3c1978c95f4c113f URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=6077c63feb2e0d70a077fbd…
Author: H. Verbeet <hverbeet(a)gmail.com> Date: Tue Dec 13 11:11:01 2005 +0100 wined3d: Don't change the shader's refcount in SetVertexShader and SetPixelShader. --- dlls/wined3d/device.c | 37 +++---------------------------------- 1 files changed, 3 insertions(+), 34 deletions(-) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index c3a7f9c..a9c253f 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -3761,7 +3761,6 @@ HRESULT WINAPI IWineD3DDeviceImpl_GetVer HRESULT WINAPI IWineD3DDeviceImpl_SetVertexShader(IWineD3DDevice *iface, IWineD3DVertexShader* pShader) { IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - IWineD3DVertexShader *oldShader = This->updateStateBlock->vertexShader; This->updateStateBlock->vertexShader = pShader; This->updateStateBlock->changed.vertexShader = TRUE; @@ -3772,20 +3771,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetVer return D3D_OK; } - if (pShader != NULL) { - IUnknown *newVertexShaderParent; - /* GetParent will add a ref, so leave it hanging until the vertex buffer is cleared */ - TRACE("(%p) : setting pShader(%p)\n", This, pShader); - IWineD3DVertexShader_GetParent(pShader, &newVertexShaderParent); - } else { - TRACE("Clear down the shader\n"); - } - if (oldShader != NULL) { - IUnknown *oldVertexShaderParent; - IWineD3DVertexShader_GetParent(oldShader, &oldVertexShaderParent); - IUnknown_Release(oldVertexShaderParent); - IUnknown_Release(oldVertexShaderParent); - } + TRACE("(%p) : setting pShader(%p)\n", This, pShader); /** * TODO: merge HAL shaders context switching from prototype */ @@ -3947,39 +3933,22 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetVer #undef GET_SHADER_CONSTANT HRESULT WINAPI IWineD3DDeviceImpl_SetPixelShader(IWineD3DDevice *iface, IWineD3DPixelShader *pShader) { - IUnknown *parent; IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - IWineD3DPixelShader *oldpShader = This->updateStateBlock->pixelShader; This->updateStateBlock->pixelShader = pShader; This->updateStateBlock->changed.pixelShader = TRUE; This->updateStateBlock->set.pixelShader = TRUE; - if (pShader == NULL) { - /* clear down the shader */ - TRACE("Clear down the shader\n"); - } - /* Handle recording of state blocks */ if (This->isRecordingState) { TRACE("Recording... not performing anything\n"); return D3D_OK; } + + TRACE("(%p) : setting pShader(%p)\n", This, pShader); /** * TODO: merge HAL shaders context switching from prototype */ - - /* manage reference counting. */ - if (pShader != NULL) { - IWineD3DPixelShader_GetParent(pShader, &parent); /* get parent adds a ref for us*/ - } - - if (oldpShader != NULL) { - IWineD3DPixelShader_GetParent(oldpShader, &parent); - IUnknown_Release(parent); /* once for the getparent */ - IUnknown_Release(parent); /* and once for the ref */ - } - return D3D_OK; }
1
0
0
0
Oliver Stieber : wined3d: Cube texture named constants.
by Alexandre Julliard
13 Dec '05
13 Dec '05
Module: wine Branch: refs/heads/master Commit: ea942e1e75260cbd92c37c8bccc529546312d02b URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=ea942e1e75260cbd92c37c8…
Author: Oliver Stieber <oliver_stieber(a)yahoo.co.uk> Date: Tue Dec 13 11:10:20 2005 +0100 wined3d: Cube texture named constants. Update cubetexture so that names constants instead of numeric constants are used for the facetype and also add some additional checks where facetype is passed as a parameter to the function. --- dlls/wined3d/cubetexture.c | 22 ++++++++++++++-------- 1 files changed, 14 insertions(+), 8 deletions(-) diff --git a/dlls/wined3d/cubetexture.c b/dlls/wined3d/cubetexture.c index ce0bfce..4cc8d0a 100644 --- a/dlls/wined3d/cubetexture.c +++ b/dlls/wined3d/cubetexture.c @@ -140,7 +140,7 @@ void WINAPI IWineD3DCubeTextureImpl_PreL /* If were dirty then reload the surfaces */ if (This->baseTexture.dirty != FALSE) { for (i = 0; i < This->baseTexture.levels; i++) { - for (j = 0; j < 6; j++) { + for (j = D3DCUBEMAP_FACE_POSITIVE_X; j <= D3DCUBEMAP_FACE_NEGATIVE_Z ; j++) { if(setGlTextureDesc) IWineD3DSurface_SetGlTextureDesc(This->surfaces[j][i], This->baseTexture.textureName, cube_targets[j]); IWineD3DSurface_LoadTexture(This->surfaces[j][i]); @@ -273,7 +273,7 @@ HRESULT WINAPI IWineD3DCubeTextureImpl_G IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface; HRESULT hr = D3DERR_INVALIDCALL; - if (Level < This->baseTexture.levels) { + if (Level < This->baseTexture.levels && FaceType >= D3DCUBEMAP_FACE_POSITIVE_X && FaceType <= D3DCUBEMAP_FACE_NEGATIVE_Z) { *ppCubeMapSurface = This->surfaces[FaceType][Level]; IWineD3DSurface_AddRef(*ppCubeMapSurface); @@ -282,7 +282,7 @@ HRESULT WINAPI IWineD3DCubeTextureImpl_G if (D3D_OK == hr) { TRACE("(%p) -> faceType(%d) level(%d) returning surface@%p\n", This, FaceType, Level, This->surfaces[FaceType][Level]); } else { - WARN("(%p) level(%d) overflow Levels(%d)\n", This, Level, This->baseTexture.levels); + WARN("(%p) level(%d) overflow Levels(%d) Or FaceType(%d)\n", This, Level, This->baseTexture.levels, FaceType); } return hr; @@ -292,14 +292,14 @@ HRESULT WINAPI IWineD3DCubeTextureImpl_L HRESULT hr = D3DERR_INVALIDCALL; IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface; - if (Level < This->baseTexture.levels) { + if (Level < This->baseTexture.levels && FaceType >= D3DCUBEMAP_FACE_POSITIVE_X && FaceType <= D3DCUBEMAP_FACE_NEGATIVE_Z) { hr = IWineD3DSurface_LockRect(This->surfaces[FaceType][Level], pLockedRect, pRect, Flags); } if (D3D_OK == hr) { TRACE("(%p) -> faceType(%d) level(%d) returning memory@%p success(%lu)\n", This, FaceType, Level, pLockedRect->pBits, hr); } else { - WARN("(%p) level(%d) overflow Levels(%d)\n", This, Level, This->baseTexture.levels); + WARN("(%p) level(%d) overflow Levels(%d) Or FaceType(%d)\n", This, Level, This->baseTexture.levels, FaceType); } return hr; @@ -309,23 +309,29 @@ HRESULT WINAPI IWineD3DCubeTextureImpl_U HRESULT hr = D3DERR_INVALIDCALL; IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface; - if (Level < This->baseTexture.levels) { + if (Level < This->baseTexture.levels && FaceType >= D3DCUBEMAP_FACE_POSITIVE_X && FaceType <= D3DCUBEMAP_FACE_NEGATIVE_Z) { hr = IWineD3DSurface_UnlockRect(This->surfaces[FaceType][Level]); } if (D3D_OK == hr) { TRACE("(%p) -> faceType(%d) level(%d) success(%lu)\n", This, FaceType, Level, hr); } else { - WARN("(%p) level(%d) overflow Levels(%d)\n", This, Level, This->baseTexture.levels); + WARN("(%p) level(%d) overflow Levels(%d) Or FaceType(%d)\n", This, Level, This->baseTexture.levels, FaceType); } return hr; } HRESULT WINAPI IWineD3DCubeTextureImpl_AddDirtyRect(IWineD3DCubeTexture *iface, D3DCUBEMAP_FACES FaceType, CONST RECT* pDirtyRect) { + HRESULT hr = D3DERR_INVALIDCALL; IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface; This->baseTexture.dirty = TRUE; TRACE("(%p) : dirtyfication of faceType(%d) Level (0)\n", This, FaceType); - return IWineD3DSurface_AddDirtyRect(This->surfaces[FaceType][0], pDirtyRect); + if (FaceType >= D3DCUBEMAP_FACE_POSITIVE_X && FaceType <= D3DCUBEMAP_FACE_NEGATIVE_Z) { + hr = IWineD3DSurface_AddDirtyRect(This->surfaces[FaceType][0], pDirtyRect); + } else { + WARN("(%p) overflow FaceType(%d)\n", This, FaceType); + } + return hr; }
1
0
0
0
Paul Vriens : shell32/tests/shlfolder.c: ILFindLastID has to be called by ordinal.
by Alexandre Julliard
12 Dec '05
12 Dec '05
Module: wine Branch: refs/heads/master Commit: ac7fd9d6e557c596f083f1f690b8154093dcb289 URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=ac7fd9d6e557c596f083f1f…
Author: Paul Vriens <Paul.Vriens(a)xs4all.nl> Date: Mon Dec 12 18:13:14 2005 +0100 shell32/tests/shlfolder.c: ILFindLastID has to be called by ordinal. --- dlls/shell32/tests/shlfolder.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/dlls/shell32/tests/shlfolder.c b/dlls/shell32/tests/shlfolder.c index 66df199..2a09ea6 100644 --- a/dlls/shell32/tests/shlfolder.c +++ b/dlls/shell32/tests/shlfolder.c @@ -369,7 +369,7 @@ static void test_GetDisplayName(void) } /* WinXP stores the filenames as both ANSI and UNICODE in the pidls */ - pidlLast = ILFindLastID(pidlTestFile); + pidlLast = pILFindLastID(pidlTestFile); todo_wine { ok( pidlLast->mkid.cb >= 76, "Expected pidl length of at least 76, got %d.\n", pidlLast->mkid.cb);
1
0
0
0
Paul Vriens : mscms: Add another possible error.
by Alexandre Julliard
12 Dec '05
12 Dec '05
Module: wine Branch: refs/heads/master Commit: 95888acbe4d713694746bd6520fb1aeffb18f72d URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=95888acbe4d713694746bd6…
Author: Paul Vriens <Paul.Vriens(a)xs4all.nl> Date: Mon Dec 12 18:13:02 2005 +0100 mscms: Add another possible error. --- dlls/mscms/tests/profile.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/dlls/mscms/tests/profile.c b/dlls/mscms/tests/profile.c index c19268d..5b0d86f 100644 --- a/dlls/mscms/tests/profile.c +++ b/dlls/mscms/tests/profile.c @@ -459,7 +459,7 @@ static void test_GetStandardColorSpacePr ret = pGetStandardColorSpaceProfileA( machine, 0, newprofile, &size ); GLE = GetLastError(); todo_wine - ok( !ret && GLE == ERROR_INVALID_PARAMETER, + ok( !ret && (GLE == ERROR_INVALID_PARAMETER || GLE == ERROR_NOT_SUPPORTED), "GetStandardColorSpaceProfileA() returns %d (GLE=%ld)\n", ret, GLE ); size = 0;
1
0
0
0
Alexandre Julliard : TEB.StackLimit should not include the guard page.
by Alexandre Julliard
12 Dec '05
12 Dec '05
Module: wine Branch: refs/heads/master Commit: f3dad37ba2671a7d86c5770e498252e3363e809c URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=f3dad37ba2671a7d86c5770…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Dec 12 17:28:32 2005 +0100 TEB.StackLimit should not include the guard page. --- dlls/kernel/process.c | 5 +++-- dlls/ntdll/signal_i386.c | 4 ++-- dlls/ntdll/thread.c | 8 +++++--- dlls/ntdll/virtual.c | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/dlls/kernel/process.c b/dlls/kernel/process.c index af9e23f..42c4033 100644 --- a/dlls/kernel/process.c +++ b/dlls/kernel/process.c @@ -978,7 +978,8 @@ static void *init_stack(void) IMAGE_NT_HEADERS *nt = RtlImageNtHeader( NtCurrentTeb()->Peb->ImageBaseAddress ); stack_size = max( nt->OptionalHeader.SizeOfStackReserve, nt->OptionalHeader.SizeOfStackCommit ); - stack_size = (stack_size + (page_size - 1)) & ~(page_size - 1); + stack_size += page_size; /* for the guard page */ + stack_size = (stack_size + 0xffff) & ~0xffff; /* round to 64K boundary */ if (stack_size < 1024 * 1024) stack_size = 1024 * 1024; /* Xlib needs a large stack */ if (!(base = VirtualAlloc( NULL, stack_size, MEM_COMMIT, PAGE_READWRITE ))) @@ -990,7 +991,7 @@ static void *init_stack(void) /* note: limit is lower than base since the stack grows down */ NtCurrentTeb()->DeallocationStack = base; NtCurrentTeb()->Tib.StackBase = (char *)base + stack_size; - NtCurrentTeb()->Tib.StackLimit = base; + NtCurrentTeb()->Tib.StackLimit = (char *)base + page_size; /* setup guard page */ VirtualProtect( base, 1, PAGE_READWRITE | PAGE_GUARD, NULL ); diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c index 3cc54af..2a7fdf5 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c @@ -830,10 +830,10 @@ static EXCEPTION_RECORD *setup_exception } if (stack - 1 > stack || /* check for overflow in subtraction */ - (char *)(stack - 1) < (char *)NtCurrentTeb()->Tib.StackLimit + 4096 || + (char *)(stack - 1) < (char *)NtCurrentTeb()->Tib.StackLimit || (char *)stack > (char *)NtCurrentTeb()->Tib.StackBase) { - UINT diff = (char *)NtCurrentTeb()->Tib.StackLimit + 4096 - (char *)stack; + UINT diff = (char *)NtCurrentTeb()->Tib.StackLimit - (char *)stack; if (diff < 4096) { ERR( "stack overflow %u bytes in thread %04lx eip %08lx esp %08lx stack %p-%p\n", diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c index 8367751..07cd08d 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -201,7 +201,7 @@ static void start_thread( struct wine_pt PRTL_THREAD_START_ROUTINE func = startup_info->entry_point; void *arg = startup_info->entry_arg; struct debug_info debug_info; - SIZE_T size; + SIZE_T size, page_size = getpagesize(); debug_info.str_pos = debug_info.strings; debug_info.out_pos = debug_info.output; @@ -219,10 +219,10 @@ static void start_thread( struct wine_pt &size, MEM_SYSTEM, PAGE_READWRITE ); /* limit is lower than base since the stack grows down */ teb->Tib.StackBase = (char *)info->stack_base + info->stack_size; - teb->Tib.StackLimit = info->stack_base; + teb->Tib.StackLimit = (char *)info->stack_base + page_size; /* setup the guard page */ - size = 1; + size = page_size; NtProtectVirtualMemory( NtCurrentProcess(), &teb->DeallocationStack, &size, PAGE_READWRITE | PAGE_GUARD, NULL ); RtlFreeHeap( GetProcessHeap(), 0, info ); @@ -252,6 +252,7 @@ NTSTATUS WINAPI RtlCreateUserThread( HAN DWORD tid = 0; int request_pipe[2]; NTSTATUS status; + SIZE_T page_size = getpagesize(); if( ! is_current_process( process ) ) { @@ -307,6 +308,7 @@ NTSTATUS WINAPI RtlCreateUserThread( HAN if (!stack_commit) stack_commit = nt->OptionalHeader.SizeOfStackCommit; } if (stack_reserve < stack_commit) stack_reserve = stack_commit; + stack_reserve += page_size; /* for the guard page */ stack_reserve = (stack_reserve + 0xffff) & ~0xffff; /* round to 64K boundary */ if (stack_reserve < 1024 * 1024) stack_reserve = 1024 * 1024; /* Xlib needs a large stack */ diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index f3984f0..7d2d445 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -1196,7 +1196,7 @@ NTSTATUS VIRTUAL_HandleFault( LPCVOID ad ret = STATUS_GUARD_PAGE_VIOLATION; } /* is it inside the stack guard page? */ - if (((const char *)addr >= stack) && ((const char *)addr < stack + (page_mask+1))) + if (((const char *)addr >= stack - (page_mask + 1)) && ((const char *)addr < stack)) ret = STATUS_STACK_OVERFLOW; } RtlLeaveCriticalSection( &csVirtual );
1
0
0
0
Alexandre Julliard : kernel: Moved main stack initialization to process.c.
by Alexandre Julliard
12 Dec '05
12 Dec '05
Module: wine Branch: refs/heads/master Commit: 8a8a94aecbfcd908e5909113ea2139ce17c41b56 URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=8a8a94aecbfcd908e590911…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Dec 12 17:20:29 2005 +0100 kernel: Moved main stack initialization to process.c. --- dlls/kernel/kernel_private.h | 3 --- dlls/kernel/process.c | 40 +++++++++++++++++++++++++++++++++------- dlls/kernel/thread.c | 28 ---------------------------- 3 files changed, 33 insertions(+), 38 deletions(-) diff --git a/dlls/kernel/kernel_private.h b/dlls/kernel/kernel_private.h index 98195d4..7139ffb 100644 --- a/dlls/kernel/kernel_private.h +++ b/dlls/kernel/kernel_private.h @@ -115,9 +115,6 @@ extern LPVOID DOSMEM_MapDosToLinear(UINT extern UINT DOSMEM_MapLinearToDos(LPVOID); /* linear Wine to DOS */ extern void load_winedos(void); -/* thread.c */ -extern TEB *THREAD_InitStack( TEB *teb, DWORD stack_size ); - /* environ.c */ extern void ENV_CopyStartupInformation(void); diff --git a/dlls/kernel/process.c b/dlls/kernel/process.c index d95d08c..af9e23f 100644 --- a/dlls/kernel/process.c +++ b/dlls/kernel/process.c @@ -967,6 +967,38 @@ static BOOL process_init(void) /*********************************************************************** + * init_stack + * + * Allocate the stack of new process. + */ +static void *init_stack(void) +{ + void *base; + SIZE_T stack_size, page_size = getpagesize(); + IMAGE_NT_HEADERS *nt = RtlImageNtHeader( NtCurrentTeb()->Peb->ImageBaseAddress ); + + stack_size = max( nt->OptionalHeader.SizeOfStackReserve, nt->OptionalHeader.SizeOfStackCommit ); + stack_size = (stack_size + (page_size - 1)) & ~(page_size - 1); + if (stack_size < 1024 * 1024) stack_size = 1024 * 1024; /* Xlib needs a large stack */ + + if (!(base = VirtualAlloc( NULL, stack_size, MEM_COMMIT, PAGE_READWRITE ))) + { + ERR( "failed to allocate main process stack\n" ); + ExitProcess( 1 ); + } + + /* note: limit is lower than base since the stack grows down */ + NtCurrentTeb()->DeallocationStack = base; + NtCurrentTeb()->Tib.StackBase = (char *)base + stack_size; + NtCurrentTeb()->Tib.StackLimit = base; + + /* setup guard page */ + VirtualProtect( base, 1, PAGE_READWRITE | PAGE_GUARD, NULL ); + return NtCurrentTeb()->Tib.StackBase; +} + + +/*********************************************************************** * start_process * * Startup routine of a new process. Runs on the new process stack. @@ -1010,7 +1042,6 @@ void __wine_kernel_init(void) { WCHAR *main_exe_name, *p; char error[1024]; - DWORD stack_size = 0; int file_exists; PEB *peb = NtCurrentTeb()->Peb; @@ -1130,13 +1161,8 @@ void __wine_kernel_init(void) set_library_wargv( __wine_main_argv ); if (!build_command_line( __wine_main_wargv )) goto error; - stack_size = RtlImageNtHeader(peb->ImageBaseAddress)->OptionalHeader.SizeOfStackReserve; - - /* allocate main thread stack */ - if (!THREAD_InitStack( NtCurrentTeb(), stack_size )) goto error; - /* switch to the new stack */ - wine_switch_to_stack( start_process, NULL, NtCurrentTeb()->Tib.StackBase ); + wine_switch_to_stack( start_process, NULL, init_stack() ); error: ExitProcess( GetLastError() ); diff --git a/dlls/kernel/thread.c b/dlls/kernel/thread.c index fd65b99..c927037 100644 --- a/dlls/kernel/thread.c +++ b/dlls/kernel/thread.c @@ -49,34 +49,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(thread); WINE_DECLARE_DEBUG_CHANNEL(relay); -/*********************************************************************** - * THREAD_InitStack - * - * Allocate the stack of a thread. - */ -TEB *THREAD_InitStack( TEB *teb, DWORD stack_size ) -{ - DWORD old_prot; - DWORD page_size = getpagesize(); - void *base; - - stack_size = (stack_size + (page_size - 1)) & ~(page_size - 1); - if (stack_size < 1024 * 1024) stack_size = 1024 * 1024; /* Xlib needs a large stack */ - - if (!(base = VirtualAlloc( NULL, stack_size, MEM_COMMIT, PAGE_READWRITE ))) - return NULL; - - teb->DeallocationStack = base; - teb->Tib.StackBase = (char *)base + stack_size; - teb->Tib.StackLimit = base; /* note: limit is lower than base since the stack grows down */ - - /* Setup guard pages */ - - VirtualProtect( base, 1, PAGE_READWRITE | PAGE_GUARD, &old_prot ); - return teb; -} - - struct new_thread_info { LPTHREAD_START_ROUTINE func;
1
0
0
0
Alexandre Julliard : server: Don't enable polling on regular files in add_queue.
by Alexandre Julliard
12 Dec '05
12 Dec '05
Module: wine Branch: refs/heads/master Commit: 770c4a1551a3198f7cf2282dbe749d95e4902804 URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=770c4a1551a3198f7cf2282…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Dec 12 17:20:03 2005 +0100 server: Don't enable polling on regular files in add_queue. --- server/fd.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/fd.c b/server/fd.c index 5c4efd4..90fb7af 100644 --- a/server/fd.c +++ b/server/fd.c @@ -1479,7 +1479,7 @@ int default_fd_add_queue( struct object struct fd *fd = get_obj_fd( obj ); if (!fd) return 0; - if (list_empty( &obj->wait_queue )) /* first on the queue */ + if (!fd->inode && list_empty( &obj->wait_queue )) /* first on the queue */ set_fd_events( fd, fd->fd_ops->get_poll_events( fd ) ); add_queue( obj, entry ); release_object( fd ); @@ -1493,7 +1493,7 @@ void default_fd_remove_queue( struct obj grab_object( obj ); remove_queue( obj, entry ); - if (list_empty( &obj->wait_queue )) /* last on the queue is gone */ + if (!fd->inode && list_empty( &obj->wait_queue )) /* last on the queue is gone */ set_fd_events( fd, 0 ); release_object( obj ); release_object( fd );
1
0
0
0
Alexandre Julliard : Pass specific access rights to wine_server_handle_to_fd.
by Alexandre Julliard
12 Dec '05
12 Dec '05
Module: wine Branch: refs/heads/master Commit: 59797f292ec23054a90326f4319fb308776c807f URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=59797f292ec23054a90326f…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Dec 12 17:15:26 2005 +0100 Pass specific access rights to wine_server_handle_to_fd. --- dlls/kernel/comm.c | 24 ++++++++++++------------ dlls/kernel/sync.c | 2 +- dlls/ntdll/directory.c | 2 +- dlls/ntdll/file.c | 4 ++-- dlls/ntdll/server.c | 5 ----- dlls/ntdll/virtual.c | 4 ++-- dlls/winedos/int13.c | 2 +- dlls/winsock/socket.c | 14 +++++++------- 8 files changed, 26 insertions(+), 31 deletions(-)
1
0
0
0
Alexandre Julliard : server: Added access rights mapping to file objects.
by Alexandre Julliard
12 Dec '05
12 Dec '05
Module: wine Branch: refs/heads/master Commit: a510a7e117bdd98c89673c2eca12852fc7824489 URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=a510a7e117bdd98c89673c2…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Dec 12 16:46:17 2005 +0100 server: Added access rights mapping to file objects. --- dlls/kernel/tests/sync.c | 2 -- dlls/ntdll/server.c | 5 +++++ server/directory.c | 12 ++++++++++- server/fd.c | 10 +++++---- server/file.c | 44 +++++++++++++++++++++++++++------------- server/file.h | 6 ++++++ server/mailslot.c | 50 +++++++++++++++++++++++++++++++++------------- server/mapping.c | 18 +++++++++++++---- server/named_pipe.c | 30 ++++++++++++++++++++++++---- server/object.c | 6 +++++- server/process.c | 6 +++--- server/registry.c | 4 ++-- server/serial.c | 12 ++++++++++- server/sock.c | 30 +++++++++++++++++----------- 14 files changed, 171 insertions(+), 64 deletions(-)
1
0
0
0
Alexandre Julliard : server: Added access rights mapping to process and thread objects.
by Alexandre Julliard
12 Dec '05
12 Dec '05
Module: wine Branch: refs/heads/master Commit: 46d1b3e8da47999f7d8d58be8802eadae8321b21 URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=46d1b3e8da47999f7d8d58b…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Dec 12 15:03:07 2005 +0100 server: Added access rights mapping to process and thread objects. --- server/process.c | 12 +++++++++++- server/thread.c | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/server/process.c b/server/process.c index 83cd716..c1657e4 100644 --- a/server/process.c +++ b/server/process.c @@ -59,6 +59,7 @@ static int running_processes; static void process_dump( struct object *obj, int verbose ); static int process_signaled( struct object *obj, struct thread *thread ); +static unsigned int process_map_access( struct object *obj, unsigned int access ); static void process_poll_event( struct fd *fd, int event ); static void process_destroy( struct object *obj ); @@ -72,7 +73,7 @@ static const struct object_ops process_o no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ - no_map_access, /* map_access */ + process_map_access, /* map_access */ no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ process_destroy /* destroy */ @@ -415,6 +416,15 @@ static int process_signaled( struct obje return !process->running_threads; } +static unsigned int process_map_access( struct object *obj, unsigned int access ) +{ + if (access & GENERIC_READ) access |= STANDARD_RIGHTS_READ | SYNCHRONIZE; + if (access & GENERIC_WRITE) access |= STANDARD_RIGHTS_WRITE | SYNCHRONIZE; + if (access & GENERIC_EXECUTE) access |= STANDARD_RIGHTS_EXECUTE; + if (access & GENERIC_ALL) access |= PROCESS_ALL_ACCESS; + return access & ~(GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL); +} + static void process_poll_event( struct fd *fd, int event ) { struct process *process = get_fd_user( fd ); diff --git a/server/thread.c b/server/thread.c index 9e2481e..507eed5 100644 --- a/server/thread.c +++ b/server/thread.c @@ -83,6 +83,7 @@ struct thread_apc static void dump_thread( struct object *obj, int verbose ); static int thread_signaled( struct object *obj, struct thread *thread ); +static unsigned int thread_map_access( struct object *obj, unsigned int access ); static void thread_poll_event( struct fd *fd, int event ); static void destroy_thread( struct object *obj ); static struct thread_apc *thread_dequeue_apc( struct thread *thread, int system_only ); @@ -97,7 +98,7 @@ static const struct object_ops thread_op no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ - no_map_access, /* map_access */ + thread_map_access, /* map_access */ no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ destroy_thread /* destroy */ @@ -271,6 +272,15 @@ static int thread_signaled( struct objec return (mythread->state == TERMINATED); } +static unsigned int thread_map_access( struct object *obj, unsigned int access ) +{ + if (access & GENERIC_READ) access |= STANDARD_RIGHTS_READ | SYNCHRONIZE; + if (access & GENERIC_WRITE) access |= STANDARD_RIGHTS_WRITE | SYNCHRONIZE; + if (access & GENERIC_EXECUTE) access |= STANDARD_RIGHTS_EXECUTE; + if (access & GENERIC_ALL) access |= THREAD_ALL_ACCESS; + return access & ~(GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL); +} + /* get a thread pointer from a thread id (and increment the refcount) */ struct thread *get_thread_from_id( thread_id_t id ) {
1
0
0
0
← Newer
1
...
19
20
21
22
23
24
25
...
46
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
Results per page:
10
25
50
100
200