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 2007
----- 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
824 discussions
Start a n
N
ew thread
Alexander Nicolaysen Sørnes : Allow users to edit/delete their queued versions
by Chris Morgan
21 Dec '07
21 Dec '07
Module: appdb Branch: master Commit: c08f935e1cb2fe21119fb62ea23f7a75eb328baf URL:
http://source.winehq.org/git/appdb.git/?a=commit;h=c08f935e1cb2fe21119fb62e…
Author: Alexander Nicolaysen Sørnes <alex(a)thehandofagony.com> Date: Fri Dec 21 23:55:27 2007 +0100 Allow users to edit/delete their queued versions --- include/version.php | 24 ++++++++++++++++++------ 1 files changed, 18 insertions(+), 6 deletions(-) diff --git a/include/version.php b/include/version.php index 64cd852..652ae01 100644 --- a/include/version.php +++ b/include/version.php @@ -1331,15 +1331,27 @@ class version { $oTableRow->SetClass("color4"); $oTable->SetHeader($oTableRow); + if($bQueued) + $oTableRow->addTextCell('Action'); + for($i = 1; $oRow = query_fetch_object($hResult); $i++) { - $oTableRow = new TableRow(); - $oTableRow->AddTextCell(version::fullNameLink($oRow->versionId)); - $oTableRow->AddTextCell($oRow->description); - $oTableRow->AddTextCell(print_date(mysqldatetime_to_unixtimestamp($oRow->submitTime))); - $oTableRow->SetClass(($i % 2) ? "color0" : "color1"); + $oTableRow = new TableRow(); + $oTableRow->AddTextCell(version::fullNameLink($oRow->versionId)); + $oTableRow->AddTextCell($oRow->description); + $oTableRow->AddTextCell(print_date(mysqldatetime_to_unixtimestamp($oRow->submitTime))); + $oTableRow->SetClass(($i % 2) ? "color0" : "color1"); + + if($bQueued) + { + $oM = new objectManager('version_queue'); + $oM->setReturnTo(array_key_exists('REQUEST_URI', $_SERVER) ? $_SERVER['REQUEST_URI'] : ""); + $shDeleteLink = '<a href="'.$oM->makeUrl('delete', $oRow->versionId, 'Delete entry').'">delete</a>'; + $shEditLink = '<a href="'.$oM->makeUrl('edit', $oRow->versionId, 'Edit entry').'">edit</a>'; + $oTableRow->addTextCell("[ $shEditLink ] [ $shDeleteLink ]"); + } - $oTable->AddRow($oTableRow); + $oTable->AddRow($oTableRow); } return $oTable->GetString();
1
0
0
0
Alexandre Julliard : kernel32: Yet another workaround for broken apps in GlobalMemoryStatus.
by Alexandre Julliard
21 Dec '07
21 Dec '07
Module: wine Branch: master Commit: 16aadb2785600cc73cfe705a3a64e0315b14d99c URL:
http://source.winehq.org/git/wine.git/?a=commit;h=16aadb2785600cc73cfe705a3…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Dec 21 14:27:40 2007 +0100 kernel32: Yet another workaround for broken apps in GlobalMemoryStatus. --- dlls/kernel32/heap.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) diff --git a/dlls/kernel32/heap.c b/dlls/kernel32/heap.c index 7c72e6d..dc86d1c 100644 --- a/dlls/kernel32/heap.c +++ b/dlls/kernel32/heap.c @@ -1422,4 +1422,17 @@ VOID WINAPI GlobalMemoryStatus( LPMEMORYSTATUS lpBuffer ) /* work around for broken photoshop 4 installer */ if ( lpBuffer->dwAvailPhys + lpBuffer->dwAvailPageFile >= 2U*1024*1024*1024) lpBuffer->dwAvailPageFile = 2U*1024*1024*1024 - lpBuffer->dwAvailPhys - 1; + + /* limit page file size for really old binaries */ + if (nt->OptionalHeader.MajorSubsystemVersion < 4) + { + if (lpBuffer->dwTotalPageFile > MAXLONG) lpBuffer->dwTotalPageFile = MAXLONG; + if (lpBuffer->dwAvailPageFile > MAXLONG) lpBuffer->dwAvailPageFile = MAXLONG; + } + + TRACE("Length %u, MemoryLoad %u, TotalPhys %lx, AvailPhys %lx," + " TotalPageFile %lx, AvailPageFile %lx, TotalVirtual %lx, AvailVirtual %lx\n", + lpBuffer->dwLength, lpBuffer->dwMemoryLoad, lpBuffer->dwTotalPhys, + lpBuffer->dwAvailPhys, lpBuffer->dwTotalPageFile, lpBuffer->dwAvailPageFile, + lpBuffer->dwTotalVirtual, lpBuffer->dwAvailVirtual ); }
1
0
0
0
Kirill K. Smirnov : kernel32: Invalidate local copy of console input event handle while reallocating console .
by Alexandre Julliard
21 Dec '07
21 Dec '07
Module: wine Branch: master Commit: b7f617c916a210ac9d5a922809afb1ca75f4e1cd URL:
http://source.winehq.org/git/wine.git/?a=commit;h=b7f617c916a210ac9d5a92280…
Author: Kirill K. Smirnov <lich(a)math.spbu.ru> Date: Thu Dec 20 15:19:10 2007 +0300 kernel32: Invalidate local copy of console input event handle while reallocating console. --- dlls/kernel32/console.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) diff --git a/dlls/kernel32/console.c b/dlls/kernel32/console.c index 6bbffac..446e882 100644 --- a/dlls/kernel32/console.c +++ b/dlls/kernel32/console.c @@ -67,6 +67,9 @@ static CRITICAL_SECTION CONSOLE_CritSect = { &critsect_debug, -1, 0, 0, 0, 0 }; static const WCHAR coninW[] = {'C','O','N','I','N','$',0}; static const WCHAR conoutW[] = {'C','O','N','O','U','T','$',0}; +/* FIXME: this is not thread safe */ +static HANDLE console_wait_event; + /* map input records to ASCII */ static void input_records_WtoA( INPUT_RECORD *buffer, int count ) { @@ -378,9 +381,6 @@ BOOL WINAPI CloseConsoleHandle(HANDLE handle) */ HANDLE WINAPI GetConsoleInputWaitHandle(void) { - static HANDLE console_wait_event; - - /* FIXME: this is not thread safe */ if (!console_wait_event) { SERVER_START_REQ(get_console_wait_event) @@ -1131,6 +1131,9 @@ BOOL WINAPI FreeConsole(VOID) { BOOL ret; + /* invalidate local copy of input event handle */ + console_wait_event = 0; + SERVER_START_REQ(free_console) { ret = !wine_server_call_err( req ); @@ -1230,6 +1233,9 @@ BOOL WINAPI AllocConsole(void) /* happens when we're running on a Unix console */ if (handle_in != INVALID_HANDLE_VALUE) CloseHandle(handle_in); + /* invalidate local copy of input event handle */ + console_wait_event = 0; + GetStartupInfoA(&siCurrent); memset(&siConsole, 0, sizeof(siConsole));
1
0
0
0
Lei Zhang : quartz: Make filtergraph aggregatable.
by Alexandre Julliard
21 Dec '07
21 Dec '07
Module: wine Branch: master Commit: 99a193ce7e661abb23b2a3ff982d8afc5eacd2ee URL:
http://source.winehq.org/git/wine.git/?a=commit;h=99a193ce7e661abb23b2a3ff9…
Author: Lei Zhang <thestig(a)google.com> Date: Thu Dec 20 20:38:59 2007 -0800 quartz: Make filtergraph aggregatable. --- dlls/quartz/filtergraph.c | 83 ++++++++++++++++++++++++++++++++++++++++---- dlls/quartz/tests/misc.c | 18 ++++++++++ 2 files changed, 93 insertions(+), 8 deletions(-) diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c index fd9e8ae..fc1aa57 100644 --- a/dlls/quartz/filtergraph.c +++ b/dlls/quartz/filtergraph.c @@ -161,6 +161,7 @@ typedef struct _IFilterGraphImpl { const IMediaEventSinkVtbl *IMediaEventSink_vtbl; const IGraphConfigVtbl *IGraphConfig_vtbl; const IMediaPositionVtbl *IMediaPosition_vtbl; + const IUnknownVtbl * IInner_vtbl; /* IAMGraphStreams */ /* IAMStats */ /* IBasicVideo2 */ @@ -194,16 +195,29 @@ typedef struct _IFilterGraphImpl { CRITICAL_SECTION cs; ITF_CACHE_ENTRY ItfCacheEntries[MAX_ITF_CACHE_ENTRIES]; int nItfCacheEntries; + IUnknown * pUnkOuter; + BOOL bUnkOuterValid; + BOOL bAggregatable; } IFilterGraphImpl; +static HRESULT WINAPI Filtergraph_QueryInterface(IFilterGraphImpl *This, + REFIID riid, LPVOID * ppv); +static ULONG WINAPI Filtergraph_AddRef(IFilterGraphImpl *This); +static ULONG WINAPI Filtergraph_Release(IFilterGraphImpl *This); -static HRESULT Filtergraph_QueryInterface(IFilterGraphImpl *This, +static HRESULT WINAPI FilterGraphInner_QueryInterface(IUnknown * iface, REFIID riid, LPVOID *ppvObj) { + ICOM_THIS_MULTI(IFilterGraphImpl, IInner_vtbl, iface); TRACE("(%p)->(%s (%p), %p)\n", This, debugstr_guid(riid), riid, ppvObj); - if (IsEqualGUID(&IID_IUnknown, riid) || - IsEqualGUID(&IID_IFilterGraph, riid) || + if (This->bAggregatable) + This->bUnkOuterValid = TRUE; + + if (IsEqualGUID(&IID_IUnknown, riid)) { + *ppvObj = &(This->IInner_vtbl); + TRACE(" returning IUnknown interface (%p)\n", *ppvObj); + } else if (IsEqualGUID(&IID_IFilterGraph, riid) || IsEqualGUID(&IID_IFilterGraph2, riid) || IsEqualGUID(&IID_IGraphBuilder, riid)) { *ppvObj = &(This->IFilterGraph2_vtbl); @@ -246,11 +260,12 @@ static HRESULT Filtergraph_QueryInterface(IFilterGraphImpl *This, return E_NOINTERFACE; } - InterlockedIncrement(&This->ref); + IUnknown_AddRef((IUnknown *)(*ppvObj)); return S_OK; } -static ULONG Filtergraph_AddRef(IFilterGraphImpl *This) { +static ULONG WINAPI FilterGraphInner_AddRef(IUnknown * iface) { + ICOM_THIS_MULTI(IFilterGraphImpl, IInner_vtbl, iface); ULONG ref = InterlockedIncrement(&This->ref); TRACE("(%p)->(): new ref = %d\n", This, ref); @@ -258,7 +273,8 @@ static ULONG Filtergraph_AddRef(IFilterGraphImpl *This) { return ref; } -static ULONG Filtergraph_Release(IFilterGraphImpl *This) { +static ULONG WINAPI FilterGraphInner_Release(IUnknown * iface) { + ICOM_THIS_MULTI(IFilterGraphImpl, IInner_vtbl, iface); ULONG ref = InterlockedDecrement(&This->ref); TRACE("(%p)->(): new ref = %d\n", This, ref); @@ -4618,6 +4634,54 @@ static const IGraphConfigVtbl IGraphConfig_VTable = GraphConfig_RemoveFilterEx }; +static const IUnknownVtbl IInner_VTable = +{ + FilterGraphInner_QueryInterface, + FilterGraphInner_AddRef, + FilterGraphInner_Release +}; + +static HRESULT WINAPI Filtergraph_QueryInterface(IFilterGraphImpl *This, + REFIID riid, + LPVOID * ppv) { + if (This->bAggregatable) + This->bUnkOuterValid = TRUE; + + if (This->pUnkOuter) + { + if (This->bAggregatable) + return IUnknown_QueryInterface(This->pUnkOuter, riid, ppv); + + if (IsEqualIID(riid, &IID_IUnknown)) + { + HRESULT hr; + + IUnknown_AddRef((IUnknown *)&(This->IInner_vtbl)); + hr = IUnknown_QueryInterface((IUnknown *)&(This->IInner_vtbl), riid, ppv); + IUnknown_Release((IUnknown *)&(This->IInner_vtbl)); + This->bAggregatable = TRUE; + return hr; + } + + *ppv = NULL; + return E_NOINTERFACE; + } + + return IUnknown_QueryInterface((IUnknown *)&(This->IInner_vtbl), riid, ppv); +} + +static ULONG WINAPI Filtergraph_AddRef(IFilterGraphImpl *This) { + if (This->pUnkOuter && This->bUnkOuterValid) + return IUnknown_AddRef(This->pUnkOuter); + return IUnknown_AddRef((IUnknown *)&(This->IInner_vtbl)); +} + +static ULONG WINAPI Filtergraph_Release(IFilterGraphImpl *This) { + if (This->pUnkOuter && This->bUnkOuterValid) + return IUnknown_Release(This->pUnkOuter); + return IUnknown_Release((IUnknown *)&(This->IInner_vtbl)); +} + /* This is the only function that actually creates a FilterGraph class... */ HRESULT FilterGraph_create(IUnknown *pUnkOuter, LPVOID *ppObj) { @@ -4626,10 +4690,13 @@ HRESULT FilterGraph_create(IUnknown *pUnkOuter, LPVOID *ppObj) TRACE("(%p,%p)\n", pUnkOuter, ppObj); - if( pUnkOuter ) - return CLASS_E_NOAGGREGATION; + *ppObj = NULL; fimpl = CoTaskMemAlloc(sizeof(*fimpl)); + fimpl->pUnkOuter = pUnkOuter; + fimpl->bUnkOuterValid = FALSE; + fimpl->bAggregatable = FALSE; + fimpl->IInner_vtbl = &IInner_VTable; fimpl->IFilterGraph2_vtbl = &IFilterGraph2_VTable; fimpl->IMediaControl_vtbl = &IMediaControl_VTable; fimpl->IMediaSeeking_vtbl = &IMediaSeeking_VTable; diff --git a/dlls/quartz/tests/misc.c b/dlls/quartz/tests/misc.c index 44994cd..fbe81bf 100644 --- a/dlls/quartz/tests/misc.c +++ b/dlls/quartz/tests/misc.c @@ -150,9 +150,27 @@ static void test_video_renderer_aggregations(void) } } +static void test_filter_graph_aggregations(void) +{ + IID iids[] = { + IID_IFilterGraph2, IID_IMediaControl, IID_IGraphBuilder, + IID_IFilterGraph, IID_IMediaSeeking, IID_IBasicAudio, IID_IBasicVideo, + IID_IVideoWindow, IID_IMediaEventEx, IID_IMediaFilter, + IID_IMediaEventSink, IID_IGraphConfig, IID_IMediaPosition + }; + int i; + + for (i = 0; i < sizeof(iids) / sizeof(iids[0]); i++) + { + test_aggregation(CLSID_SystemClock, CLSID_FilterGraph, + IID_IReferenceClock, iids[i]); + } +} + START_TEST(misc) { CoInitialize(NULL); test_video_renderer_aggregations(); + test_filter_graph_aggregations(); }
1
0
0
0
Lei Zhang : quartz: Move aggregation tests into separate file.
by Alexandre Julliard
21 Dec '07
21 Dec '07
Module: wine Branch: master Commit: 5ddb13381eac3b73bc2e9e6b0db4d0f60799c280 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=5ddb13381eac3b73bc2e9e6b0…
Author: Lei Zhang <thestig(a)google.com> Date: Thu Dec 20 20:19:07 2007 -0800 quartz: Move aggregation tests into separate file. --- dlls/quartz/tests/Makefile.in | 1 + dlls/quartz/tests/misc.c | 158 +++++++++++++++++++++++++++++++++++++ dlls/quartz/tests/videorenderer.c | 119 ---------------------------- 3 files changed, 159 insertions(+), 119 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=5ddb13381eac3b73bc2e9…
1
0
0
0
Alexander Dorofeyev : wined3d: Use IWineD3DDeviceImpl_ClearSurface in IWineD3DDeviceImpl_Clear.
by Alexandre Julliard
21 Dec '07
21 Dec '07
Module: wine Branch: master Commit: eb3fb4bf280803f1dc500c07a0f9742f273bc883 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=eb3fb4bf280803f1dc500c07a…
Author: Alexander Dorofeyev <alexd4(a)inbox.lv> Date: Wed Dec 19 23:33:31 2007 -0800 wined3d: Use IWineD3DDeviceImpl_ClearSurface in IWineD3DDeviceImpl_Clear. --- dlls/wined3d/device.c | 160 +------------------------------------------------ 1 files changed, 1 insertions(+), 159 deletions(-) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 6775a61..1eaf952 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -4942,13 +4942,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_Clear(IWineD3DDevice *iface, DWORD Coun IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; IWineD3DSurfaceImpl *target = (IWineD3DSurfaceImpl *)This->render_targets[0]; - GLbitfield glMask = 0; - unsigned int i; - WINED3DRECT curRect; - RECT vp_rect; - WINED3DVIEWPORT *vp = &This->stateBlock->viewport; - UINT drawable_width, drawable_height; - TRACE("(%p) Count (%d), pRects (%p), Flags (%x), Color (0x%08x), Z (%f), Stencil (%d)\n", This, Count, pRects, Flags, Color, Z, Stencil); @@ -4958,158 +4951,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_Clear(IWineD3DDevice *iface, DWORD Coun return WINED3DERR_INVALIDCALL; } - /* When we're clearing parts of the drawable, make sure that the target surface is well up to date in the - * drawable. After the clear we'll mark the drawable up to date, so we have to make sure that this is true - * for the cleared parts, and the untouched parts. - * - * If we're clearing the whole target there is no need to copy it into the drawable, it will be overwritten - * anyway. If we're not clearing the color buffer we don't have to copy either since we're not going to set - * the drawable up to date. We have to check all settings that limit the clear area though. Do not bother - * checking all this if the dest surface is in the drawable anyway. - */ - if((Flags & WINED3DCLEAR_TARGET) && !(target->Flags & SFLAG_INDRAWABLE)) { - while(1) { - if(vp->X != 0 || vp->Y != 0 || - vp->Width < target->currentDesc.Width || vp->Height < target->currentDesc.Height) { - IWineD3DSurface_LoadLocation((IWineD3DSurface *) target, SFLAG_INDRAWABLE, NULL); - break; - } - if(This->stateBlock->renderState[WINED3DRS_SCISSORTESTENABLE] && ( - This->stateBlock->scissorRect.left > 0 || This->stateBlock->scissorRect.top > 0 || - This->stateBlock->scissorRect.right < target->currentDesc.Width || - This->stateBlock->scissorRect.bottom < target->currentDesc.Height)) { - IWineD3DSurface_LoadLocation((IWineD3DSurface *) target, SFLAG_INDRAWABLE, NULL); - break; - } - if(Count > 0 && pRects && ( - pRects[0].x1 > 0 || pRects[0].y1 > 0 || - pRects[0].x2 < target->currentDesc.Width || - pRects[0].y2 < target->currentDesc.Height)) { - IWineD3DSurface_LoadLocation((IWineD3DSurface *) target, SFLAG_INDRAWABLE, NULL); - break; - } - break; - } - } - - target->get_drawable_size(target, &drawable_width, &drawable_height); - - /* This is for offscreen rendering as well as for multithreading, thus activate the set render target - * and not the last active one. - */ - ActivateContext(This, This->render_targets[0], CTXUSAGE_CLEAR); - ENTER_GL(); - - if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) { - apply_fbo_state(iface); - } - - /* Only set the values up once, as they are not changing */ - if (Flags & WINED3DCLEAR_STENCIL) { - glClearStencil(Stencil); - checkGLcall("glClearStencil"); - glMask = glMask | GL_STENCIL_BUFFER_BIT; - glStencilMask(0xFFFFFFFF); - } - - if (Flags & WINED3DCLEAR_ZBUFFER) { - glDepthMask(GL_TRUE); - glClearDepth(Z); - checkGLcall("glClearDepth"); - glMask = glMask | GL_DEPTH_BUFFER_BIT; - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_ZWRITEENABLE)); - } - - if (Flags & WINED3DCLEAR_TARGET) { - TRACE("Clearing screen with glClear to color %x\n", Color); - glClearColor(D3DCOLOR_R(Color), - D3DCOLOR_G(Color), - D3DCOLOR_B(Color), - D3DCOLOR_A(Color)); - checkGLcall("glClearColor"); - - /* Clear ALL colors! */ - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glMask = glMask | GL_COLOR_BUFFER_BIT; - } - - vp_rect.left = vp->X; - vp_rect.top = vp->Y; - vp_rect.right = vp->X + vp->Width; - vp_rect.bottom = vp->Y + vp->Height; - if (!(Count > 0 && pRects)) { - if(This->stateBlock->renderState[WINED3DRS_SCISSORTESTENABLE]) { - IntersectRect(&vp_rect, &vp_rect, &This->stateBlock->scissorRect); - } - if(This->render_offscreen) { - glScissor(vp_rect.left, vp_rect.top, - vp_rect.right - vp_rect.left, vp_rect.bottom - vp_rect.top); - } else { - glScissor(vp_rect.left, drawable_height - vp_rect.bottom, - vp_rect.right - vp_rect.left, vp_rect.bottom - vp_rect.top); - } - checkGLcall("glScissor"); - glClear(glMask); - checkGLcall("glClear"); - } else { - /* Now process each rect in turn */ - for (i = 0; i < Count; i++) { - /* Note gl uses lower left, width/height */ - IntersectRect((RECT *) &curRect, &vp_rect, (RECT *) &pRects[i]); - if(This->stateBlock->renderState[WINED3DRS_SCISSORTESTENABLE]) { - IntersectRect((RECT *) &curRect, (RECT *) &curRect, &This->stateBlock->scissorRect); - } - TRACE("(%p) Rect=(%d,%d)->(%d,%d) glRect=(%d,%d), len=%d, hei=%d\n", This, - pRects[i].x1, pRects[i].y1, pRects[i].x2, pRects[i].y2, - curRect.x1, (target->currentDesc.Height - curRect.y2), - curRect.x2 - curRect.x1, curRect.y2 - curRect.y1); - - /* Tests show that rectangles where x1 > x2 or y1 > y2 are ignored silently. - * The rectangle is not cleared, no error is returned, but further rectanlges are - * still cleared if they are valid - */ - if(curRect.x1 > curRect.x2 || curRect.y1 > curRect.y2) { - TRACE("Rectangle with negative dimensions, ignoring\n"); - continue; - } - - if(This->render_offscreen) { - glScissor(curRect.x1, curRect.y1, - curRect.x2 - curRect.x1, curRect.y2 - curRect.y1); - } else { - glScissor(curRect.x1, drawable_height - curRect.y2, - curRect.x2 - curRect.x1, curRect.y2 - curRect.y1); - } - checkGLcall("glScissor"); - - glClear(glMask); - checkGLcall("glClear"); - } - } - - /* Restore the old values (why..?) */ - if (Flags & WINED3DCLEAR_STENCIL) { - glStencilMask(This->stateBlock->renderState[WINED3DRS_STENCILWRITEMASK]); - } - if (Flags & WINED3DCLEAR_TARGET) { - DWORD mask = This->stateBlock->renderState[WINED3DRS_COLORWRITEENABLE]; - glColorMask(mask & WINED3DCOLORWRITEENABLE_RED ? GL_TRUE : GL_FALSE, - mask & WINED3DCOLORWRITEENABLE_GREEN ? GL_TRUE : GL_FALSE, - mask & WINED3DCOLORWRITEENABLE_BLUE ? GL_TRUE : GL_FALSE, - mask & WINED3DCOLORWRITEENABLE_ALPHA ? GL_TRUE : GL_FALSE); - - /* Dirtify the target surface for now. If the surface is locked regularly, and an up to date sysmem copy exists, - * it is most likely more efficient to perform a clear on the sysmem copy too instead of downloading it - */ - IWineD3DSurface_ModifyLocation(This->lastActiveRenderTarget, SFLAG_INDRAWABLE, TRUE); - /* TODO: Move the fbo logic into ModifyLocation() */ - if(This->render_offscreen && wined3d_settings.offscreen_rendering_mode == ORM_FBO) { - target->Flags |= SFLAG_INTEXTURE; - } - } - LEAVE_GL(); - - return WINED3D_OK; + return IWineD3DDeviceImpl_ClearSurface(This, target, Count, pRects, Flags, Color, Z, Stencil); } /*****
1
0
0
0
Alexander Dorofeyev : wined3d: Rewrite IWineD3DSurfaceImpl_BltOverride colorfill codepath.
by Alexandre Julliard
21 Dec '07
21 Dec '07
Module: wine Branch: master Commit: f5aaabd1f2310c30167efb29257e96f2f0d8edbe URL:
http://source.winehq.org/git/wine.git/?a=commit;h=f5aaabd1f2310c30167efb292…
Author: Alexander Dorofeyev <alexd4(a)inbox.lv> Date: Wed Dec 19 23:32:11 2007 -0800 wined3d: Rewrite IWineD3DSurfaceImpl_BltOverride colorfill codepath. --- dlls/wined3d/device.c | 162 ++++++++++++++++++++++++++++++++++++++++ dlls/wined3d/surface.c | 51 ++++--------- dlls/wined3d/wined3d_private.h | 3 + 3 files changed, 179 insertions(+), 37 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=f5aaabd1f2310c30167ef…
1
0
0
0
Andrey Turkin : ntdll: Implement BindIoCompletionCallback.
by Alexandre Julliard
21 Dec '07
21 Dec '07
Module: wine Branch: master Commit: 343f2c1b307bbaffc00b93bceb01b8343730a83c URL:
http://source.winehq.org/git/wine.git/?a=commit;h=343f2c1b307bbaffc00b93bce…
Author: Andrey Turkin <andrey.turkin(a)gmail.com> Date: Thu Dec 20 00:27:44 2007 +0300 ntdll: Implement BindIoCompletionCallback. --- dlls/kernel32/sync.c | 9 +++- dlls/kernel32/tests/sync.c | 4 -- dlls/ntdll/ntdll.spec | 2 +- dlls/ntdll/threadpool.c | 93 ++++++++++++++++++++++++++++++++++++++++++++ include/winternl.h | 3 + 5 files changed, 104 insertions(+), 7 deletions(-) diff --git a/dlls/kernel32/sync.c b/dlls/kernel32/sync.c index 1bb2c8a..975b914 100644 --- a/dlls/kernel32/sync.c +++ b/dlls/kernel32/sync.c @@ -1912,8 +1912,13 @@ BOOL WINAPI PostQueuedCompletionStatus( HANDLE CompletionPort, DWORD dwNumberOfB */ BOOL WINAPI BindIoCompletionCallback( HANDLE FileHandle, LPOVERLAPPED_COMPLETION_ROUTINE Function, ULONG Flags) { - FIXME("%p, %p, %d, stub!\n", FileHandle, Function, Flags); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + NTSTATUS status; + + TRACE("(%p, %p, %d)\n", FileHandle, Function, Flags); + + status = RtlSetIoCompletionCallback( FileHandle, (PRTL_OVERLAPPED_COMPLETION_ROUTINE)Function, Flags ); + if (status == STATUS_SUCCESS) return TRUE; + SetLastError( RtlNtStatusToDosError(status) ); return FALSE; } diff --git a/dlls/kernel32/tests/sync.c b/dlls/kernel32/tests/sync.c index e402fed..3ab86ea 100644 --- a/dlls/kernel32/tests/sync.c +++ b/dlls/kernel32/tests/sync.c @@ -326,10 +326,6 @@ static void test_iocp_callback(void) retb = p_BindIoCompletionCallback(hFile, iocp_callback, 0); ok(retb == FALSE, "BindIoCompletionCallback succeeded on a file that wasn't created with FILE_FLAG_OVERLAPPED\n"); - if(retb == FALSE && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) { - todo_wine ok (0, "BindIoCompletionCallback returned ERROR_CALL_NOT_IMPLEMENTED\n"); - return; - } ok(GetLastError() == ERROR_INVALID_PARAMETER, "Last error is %d\n", GetLastError()); ret = CloseHandle(hFile); diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index fc1a6c8..1a7db96 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -822,7 +822,7 @@ @ stdcall RtlSetGroupSecurityDescriptor(ptr ptr long) # @ stub RtlSetHeapInformation @ stub RtlSetInformationAcl -# @ stub RtlSetIoCompletionCallback +@ stdcall RtlSetIoCompletionCallback(long ptr long) @ stdcall RtlSetLastWin32Error(long) @ stdcall RtlSetLastWin32ErrorAndNtStatusFromNtStatus(long) # @ stub RtlSetMemoryStreamSize diff --git a/dlls/ntdll/threadpool.c b/dlls/ntdll/threadpool.c index 72ea0cf..147667b 100644 --- a/dlls/ntdll/threadpool.c +++ b/dlls/ntdll/threadpool.c @@ -54,6 +54,16 @@ static RTL_CRITICAL_SECTION_DEBUG critsect_debug = }; static RTL_CRITICAL_SECTION threadpool_cs = { &critsect_debug, -1, 0, 0, 0, 0 }; +static HANDLE compl_port = NULL; +static RTL_CRITICAL_SECTION threadpool_compl_cs; +static RTL_CRITICAL_SECTION_DEBUG critsect_compl_debug = +{ + 0, 0, &threadpool_compl_cs, + { &critsect_compl_debug.ProcessLocksList, &critsect_compl_debug.ProcessLocksList }, + 0, 0, { (DWORD_PTR)(__FILE__ ": threadpool_compl_cs") } +}; +static RTL_CRITICAL_SECTION threadpool_compl_cs = { &critsect_compl_debug, -1, 0, 0, 0, 0 }; + struct work_item { struct list entry; @@ -218,3 +228,86 @@ NTSTATUS WINAPI RtlQueueWorkItem(PRTL_WORK_ITEM_ROUTINE Function, PVOID Context, return STATUS_SUCCESS; } + +/*********************************************************************** + * iocp_poller - get completion events and run callbacks + */ +static DWORD CALLBACK iocp_poller(LPVOID Arg) +{ + while( TRUE ) + { + PRTL_OVERLAPPED_COMPLETION_ROUTINE callback; + LPVOID overlapped; + IO_STATUS_BLOCK iosb; + NTSTATUS res = NtRemoveIoCompletion( compl_port, (PULONG_PTR)&callback, (PULONG_PTR)&overlapped, &iosb, NULL ); + if (res) + { + ERR("NtRemoveIoCompletion failed: 0x%x\n", res); + } + else + { + DWORD transferred = 0; + DWORD err = 0; + + if (iosb.u.Status == STATUS_SUCCESS) + transferred = iosb.Information; + else + err = RtlNtStatusToDosError(iosb.u.Status); + + callback( err, transferred, overlapped ); + } + } +} + +/*********************************************************************** + * RtlSetIoCompletionCallback (NTDLL.@) + * + * Binds a handle to a thread pool's completion port, and possibly + * starts a non-I/O thread to monitor this port and call functions back. + * + * PARAMS + * FileHandle [I] Handle to bind to a completion port. + * Function [I] Callback function to call on I/O completions. + * Flags [I] Not used. + * + * RETURNS + * Success: STATUS_SUCCESS. + * Failure: Any NTSTATUS code. + * + */ +NTSTATUS WINAPI RtlSetIoCompletionCallback(HANDLE FileHandle, PRTL_OVERLAPPED_COMPLETION_ROUTINE Function, ULONG Flags) +{ + IO_STATUS_BLOCK iosb; + FILE_COMPLETION_INFORMATION info; + + if (Flags) FIXME("Unknown value Flags=0x%x\n", Flags); + + if (!compl_port) + { + NTSTATUS res = STATUS_SUCCESS; + + RtlEnterCriticalSection(&threadpool_compl_cs); + if (!compl_port) + { + HANDLE cport; + + res = NtCreateIoCompletion( &cport, IO_COMPLETION_ALL_ACCESS, NULL, 0 ); + if (!res) + { + /* FIXME native can start additional threads in case of e.g. hung callback function. */ + res = RtlQueueWorkItem( iocp_poller, NULL, WT_EXECUTEDEFAULT ); + if (!res) + compl_port = cport; + else + NtClose( cport ); + } + } + RtlLeaveCriticalSection(&threadpool_compl_cs); + if (res) return res; + } + + info.CompletionPort = compl_port; + info.CompletionKey = (ULONG_PTR)Function; + + return NtSetInformationFile( FileHandle, &iosb, &info, sizeof(info), FileCompletionInformation ); +} diff --git a/include/winternl.h b/include/winternl.h index 7ba6e5b..79f3184 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -1568,6 +1568,8 @@ typedef struct _KEY_MULTIPLE_VALUE_INFORMATION ULONG Type; } KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION; +typedef VOID (CALLBACK *PRTL_OVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPVOID); + typedef VOID (*PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG ); typedef enum _EVENT_TYPE { @@ -2273,6 +2275,7 @@ NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOL NTSYSAPI NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING); NTSYSAPI NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN); NTSYSAPI NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN); +NTSYSAPI NTSTATUS WINAPI RtlSetIoCompletionCallback(HANDLE,PRTL_OVERLAPPED_COMPLETION_ROUTINE,ULONG); NTSYSAPI void WINAPI RtlSetLastWin32Error(DWORD); NTSYSAPI void WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS); NTSYSAPI NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
1
0
0
0
Zhangrong Huang : secur32: Fix possible crash while loading SSP providers from registry.
by Alexandre Julliard
21 Dec '07
21 Dec '07
Module: wine Branch: master Commit: 26bc15a8117069a7810f6d7270d7c374ec09d8de URL:
http://source.winehq.org/git/wine.git/?a=commit;h=26bc15a8117069a7810f6d727…
Author: Zhangrong Huang <hzhrong(a)gmail.com> Date: Thu Dec 20 23:29:23 2007 +0800 secur32: Fix possible crash while loading SSP providers from registry. --- dlls/secur32/secur32.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/dlls/secur32/secur32.c b/dlls/secur32/secur32.c index eb37879..01e0480 100644 --- a/dlls/secur32/secur32.c +++ b/dlls/secur32/secur32.c @@ -567,8 +567,9 @@ static void SECUR32_initializeProviders(void) { WCHAR *ptr; + size = size / sizeof(WCHAR); for (ptr = securityPkgNames; - ptr < (PWSTR)((PBYTE)securityPkgNames + size); ) + ptr < securityPkgNames + size; ) { WCHAR *comma;
1
0
0
0
Zhangrong Huang : gdi32, winex11.drv: Correct default Chinese font name.
by Alexandre Julliard
21 Dec '07
21 Dec '07
Module: wine Branch: master Commit: 0e4f8d1e2c0e3feb94a738daf302de5c35581646 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=0e4f8d1e2c0e3feb94a738daf…
Author: Zhangrong Huang <hzhrong(a)gmail.com> Date: Thu Dec 20 23:02:44 2007 +0800 gdi32, winex11.drv: Correct default Chinese font name. --- dlls/gdi32/gdiobj.c | 6 +++--- dlls/winex11.drv/xfont.c | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dlls/gdi32/gdiobj.c b/dlls/gdi32/gdiobj.c index 56d3f91..91cfb71 100644 --- a/dlls/gdi32/gdiobj.c +++ b/dlls/gdi32/gdiobj.c @@ -363,7 +363,7 @@ static const struct DefaultFontInfo default_fonts[] = { /* DefaultGuiFont */ 9, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, GB2312_CHARSET, 0, 0, DEFAULT_QUALITY, VARIABLE_PITCH | FF_SWISS, - {'M','S',' ','S','o','n','g','\0'} /* FIXME: Is this correct? */ + {'S','i','m','S','u','n','\0'} }, }, { HANGEUL_CHARSET, @@ -405,9 +405,9 @@ static const struct DefaultFontInfo default_fonts[] = {'\0'} }, { /* DefaultGuiFont */ - 8, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, CHINESEBIG5_CHARSET, + 9, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, CHINESEBIG5_CHARSET, 0, 0, DEFAULT_QUALITY, VARIABLE_PITCH | FF_SWISS, - {'\0'} /* FIXME - what is the native font??? */ + {'P','M','i','n','g','L','i','U','\0'} }, }, { JOHAB_CHARSET, diff --git a/dlls/winex11.drv/xfont.c b/dlls/winex11.drv/xfont.c index 0ef18fc..3298818 100644 --- a/dlls/winex11.drv/xfont.c +++ b/dlls/winex11.drv/xfont.c @@ -308,8 +308,8 @@ static const struct CharsetBindingInfo charsetbindings[] = { "\x82\x6c\x82\x72 \x82\x6f\x96\xbe\x92\xa9", SHIFTJIS_CHARSET }, /* MS P mincho */ { "GulimChe", HANGEUL_CHARSET }, - { "MS Song", GB2312_CHARSET }, - { "MS Hei", GB2312_CHARSET }, + { "\xcb\xce\xcc\xe5", GB2312_CHARSET }, /* SimSun */ + { "\xba\xda\xcc\xe5", GB2312_CHARSET }, /* SimHei */ { "\xb7\x73\xb2\xd3\xa9\xfa\xc5\xe9", CHINESEBIG5_CHARSET },/*MS Mingliu*/ { "\xb2\xd3\xa9\xfa\xc5\xe9", CHINESEBIG5_CHARSET },
1
0
0
0
← Newer
1
...
15
16
17
18
19
20
21
...
83
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Results per page:
10
25
50
100
200