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
August 2014
----- 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
304 discussions
Start a n
N
ew thread
Aric Stewart : dwrite: Initial implementation of CreateCustomFontFileReference.
by Alexandre Julliard
20 Aug '14
20 Aug '14
Module: wine Branch: master Commit: bb9721bd2914174e30b5b85bc94eee350dd9beab URL:
http://source.winehq.org/git/wine.git/?a=commit;h=bb9721bd2914174e30b5b85bc…
Author: Aric Stewart <aric(a)codeweavers.com> Date: Tue Aug 12 14:11:34 2014 -0500 dwrite: Initial implementation of CreateCustomFontFileReference. --- dlls/dwrite/dwrite_private.h | 1 + dlls/dwrite/font.c | 112 +++++++++++++++++++++++++++++++++++++++++++ dlls/dwrite/main.c | 16 ++++++- dlls/dwrite/tests/font.c | 17 +++++++ 4 files changed, 144 insertions(+), 2 deletions(-) diff --git a/dlls/dwrite/dwrite_private.h b/dlls/dwrite/dwrite_private.h index 8db35a3..fcc9b7f 100644 --- a/dlls/dwrite/dwrite_private.h +++ b/dlls/dwrite/dwrite_private.h @@ -89,3 +89,4 @@ extern HRESULT add_localizedstring(IDWriteLocalizedStrings*,const WCHAR*,const W extern HRESULT get_system_fontcollection(IDWriteFontCollection**) DECLSPEC_HIDDEN; extern void release_system_fontcollection(void) DECLSPEC_HIDDEN; extern HRESULT get_textanalyzer(IDWriteTextAnalyzer**) DECLSPEC_HIDDEN; +extern HRESULT create_font_file(IDWriteFontFileLoader *loader, const void *reference_key, UINT32 key_size, IDWriteFontFile **font_file) DECLSPEC_HIDDEN; diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c index 0962784..afeca27 100644 --- a/dlls/dwrite/font.c +++ b/dlls/dwrite/font.c @@ -162,6 +162,15 @@ struct dwrite_fontface { LOGFONTW logfont; }; +struct dwrite_fontfile { + IDWriteFontFile IDWriteFontFile_iface; + LONG ref; + + IDWriteFontFileLoader *loader; + void *reference_key; + UINT32 key_size; +}; + static HRESULT create_fontfamily(const WCHAR *familyname, IDWriteFontFamily **family); static inline struct dwrite_fontface *impl_from_IDWriteFontFace(IDWriteFontFace *iface) @@ -174,6 +183,11 @@ static inline struct dwrite_font *impl_from_IDWriteFont(IDWriteFont *iface) return CONTAINING_RECORD(iface, struct dwrite_font, IDWriteFont_iface); } +static inline struct dwrite_fontfile *impl_from_IDWriteFontFile(IDWriteFontFile *iface) +{ + return CONTAINING_RECORD(iface, struct dwrite_fontfile, IDWriteFontFile_iface); +} + static inline struct dwrite_fontfamily *impl_from_IDWriteFontFamily(IDWriteFontFamily *iface) { return CONTAINING_RECORD(iface, struct dwrite_fontfamily, IDWriteFontFamily_iface); @@ -978,3 +992,101 @@ HRESULT create_font_from_logfont(const LOGFONTW *logfont, IDWriteFont **font) return S_OK; } + +static HRESULT WINAPI dwritefontfile_QueryInterface(IDWriteFontFile *iface, REFIID riid, void **obj) +{ + struct dwrite_fontfile *This = impl_from_IDWriteFontFile(iface); + + TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), obj); + + if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDWriteFontFile)) + { + *obj = iface; + IDWriteFontFile_AddRef(iface); + return S_OK; + } + + *obj = NULL; + return E_NOINTERFACE; +} + +static ULONG WINAPI dwritefontfile_AddRef(IDWriteFontFile *iface) +{ + struct dwrite_fontfile *This = impl_from_IDWriteFontFile(iface); + ULONG ref = InterlockedIncrement(&This->ref); + TRACE("(%p)->(%d)\n", This, ref); + return ref; +} + +static ULONG WINAPI dwritefontfile_Release(IDWriteFontFile *iface) +{ + struct dwrite_fontfile *This = impl_from_IDWriteFontFile(iface); + ULONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p)->(%d)\n", This, ref); + + if (!ref) + { + IDWriteFontFileLoader_Release(This->loader); + heap_free(This->reference_key); + heap_free(This); + } + + return ref; +} + +static HRESULT WINAPI dwritefontfile_GetReferenceKey(IDWriteFontFile *iface, const void **fontFileReferenceKey, UINT32 *fontFileReferenceKeySize) +{ + struct dwrite_fontfile *This = impl_from_IDWriteFontFile(iface); + TRACE("(%p)->(%p, %p)\n", This, fontFileReferenceKey, fontFileReferenceKeySize); + *fontFileReferenceKey = This->reference_key; + *fontFileReferenceKeySize = This->key_size; + + return S_OK; +} + +static HRESULT WINAPI dwritefontfile_GetLoader(IDWriteFontFile *iface, IDWriteFontFileLoader **fontFileLoader) +{ + struct dwrite_fontfile *This = impl_from_IDWriteFontFile(iface); + TRACE("(%p)->(%p)\n", This, fontFileLoader); + *fontFileLoader = This->loader; + IDWriteFontFileLoader_AddRef(This->loader); + + return S_OK; +} + +static HRESULT WINAPI dwritefontfile_Analyze(IDWriteFontFile *iface, BOOL *isSupportedFontType, DWRITE_FONT_FILE_TYPE *fontFileType, DWRITE_FONT_FACE_TYPE *fontFaceType, UINT32 *numberOfFaces) +{ + struct dwrite_fontfile *This = impl_from_IDWriteFontFile(iface); + FIXME("(%p)->(%p, %p, %p, %p): Stub\n", This, isSupportedFontType, fontFileType, fontFaceType, numberOfFaces); + return E_NOTIMPL; +} + +static const IDWriteFontFileVtbl dwritefontfilevtbl = { + dwritefontfile_QueryInterface, + dwritefontfile_AddRef, + dwritefontfile_Release, + dwritefontfile_GetReferenceKey, + dwritefontfile_GetLoader, + dwritefontfile_Analyze, +}; + +HRESULT create_font_file(IDWriteFontFileLoader *loader, const void *reference_key, UINT32 key_size, IDWriteFontFile **font_file) +{ + struct dwrite_fontfile *This; + + This = heap_alloc(sizeof(struct dwrite_fontfile)); + if (!This) return E_OUTOFMEMORY; + + This->IDWriteFontFile_iface.lpVtbl = &dwritefontfilevtbl; + This->ref = 1; + IDWriteFontFileLoader_AddRef(loader); + This->loader = loader; + This->reference_key = heap_alloc(key_size); + memcpy(This->reference_key, reference_key, key_size); + This->key_size = key_size; + + *font_file = &This->IDWriteFontFile_iface; + + return S_OK; +} diff --git a/dlls/dwrite/main.c b/dlls/dwrite/main.c index 3620718..f736301 100644 --- a/dlls/dwrite/main.c +++ b/dlls/dwrite/main.c @@ -509,9 +509,21 @@ static HRESULT WINAPI dwritefactory_CreateFontFileReference(IDWriteFactory *ifac static HRESULT WINAPI dwritefactory_CreateCustomFontFileReference(IDWriteFactory *iface, void const *reference_key, UINT32 key_size, IDWriteFontFileLoader *loader, IDWriteFontFile **font_file) { + int i; struct dwritefactory *This = impl_from_IDWriteFactory(iface); - FIXME("(%p)->(%p %u %p %p): stub\n", This, reference_key, key_size, loader, font_file); - return E_NOTIMPL; + HRESULT hr; + + TRACE("(%p)->(%p %u %p %p)\n", This, reference_key, key_size, loader, font_file); + + if (loader == NULL) + return E_INVALIDARG; + + for (i = 0; i < This->file_loader_count; i++) + if (This->file_loaders[i] == loader) break; + if (i == This->file_loader_count) + return E_INVALIDARG; + hr = create_font_file(loader, reference_key, key_size, font_file); + return hr; } static HRESULT WINAPI dwritefactory_CreateFontFace(IDWriteFactory *iface, diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c index 243af9f..4368bcf 100644 --- a/dlls/dwrite/tests/font.c +++ b/dlls/dwrite/tests/font.c @@ -761,6 +761,8 @@ static void test_FontLoader(void) { IDWriteFontFileLoader floader = { &dwritefontfileloadervtbl }; IDWriteFontFileLoader floader2 = { &dwritefontfileloadervtbl }; + IDWriteFontFileLoader floader3 = { &dwritefontfileloadervtbl }; + IDWriteFontFile *ffile = NULL; HRESULT hr; hr = IDWriteFactory_RegisterFontFileLoader(factory, NULL); @@ -772,6 +774,21 @@ static void test_FontLoader(void) hr = IDWriteFactory_RegisterFontFileLoader(factory, &floader); ok(hr == DWRITE_E_ALREADYREGISTERED, "got 0x%08x\n", hr); + hr = IDWriteFactory_CreateCustomFontFileReference(factory, "test", 4, &floader, &ffile); + ok(hr == S_OK, "got 0x%08x\n", hr); + if (SUCCEEDED(hr)) + IDWriteFontFile_Release(ffile); + + hr = IDWriteFactory_CreateCustomFontFileReference(factory, "test", 4, &floader3, &ffile); + ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + if (SUCCEEDED(hr)) + IDWriteFontFile_Release(ffile); + + hr = IDWriteFactory_CreateCustomFontFileReference(factory, "test", 4, NULL, &ffile); + ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + if (SUCCEEDED(hr)) + IDWriteFontFile_Release(ffile); + hr = IDWriteFactory_UnregisterFontFileLoader(factory, &floader); ok(hr == S_OK, "got 0x%08x\n", hr); hr = IDWriteFactory_UnregisterFontFileLoader(factory, &floader);
1
0
0
0
Aric Stewart : dwrite: Implement Font File Loader registration.
by Alexandre Julliard
20 Aug '14
20 Aug '14
Module: wine Branch: master Commit: a254741b36108936fcb65a818da8dc756c46b602 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=a254741b36108936fcb65a818…
Author: Aric Stewart <aric(a)codeweavers.com> Date: Tue Aug 12 14:11:30 2014 -0500 dwrite: Implement Font File Loader registration. --- dlls/dwrite/main.c | 55 ++++++++++++++++++++++++++++++++++++++++---- dlls/dwrite/tests/font.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+), 4 deletions(-) diff --git a/dlls/dwrite/main.c b/dlls/dwrite/main.c index 566a6eb..3620718 100644 --- a/dlls/dwrite/main.c +++ b/dlls/dwrite/main.c @@ -365,6 +365,8 @@ struct dwritefactory{ IDWriteFontCollectionLoader **loaders; LONG loader_count; + IDWriteFontFileLoader **file_loaders; + LONG file_loader_count; }; static inline struct dwritefactory *impl_from_IDWriteFactory(IDWriteFactory *iface) @@ -412,6 +414,10 @@ static ULONG WINAPI dwritefactory_Release(IDWriteFactory *iface) if (This->loaders[i]) IDWriteFontCollectionLoader_Release(This->loaders[i]); heap_free(This->loaders); + for (i = 0; i < This->file_loader_count; i++) + if (This->file_loaders[i]) + IDWriteFontFileLoader_Release(This->file_loaders[i]); + heap_free(This->file_loaders); heap_free(This); } @@ -554,16 +560,55 @@ static HRESULT WINAPI dwritefactory_CreateCustomRenderingParams(IDWriteFactory * static HRESULT WINAPI dwritefactory_RegisterFontFileLoader(IDWriteFactory *iface, IDWriteFontFileLoader *loader) { + int i; struct dwritefactory *This = impl_from_IDWriteFactory(iface); - FIXME("(%p)->(%p): stub\n", This, loader); - return E_NOTIMPL; + TRACE("(%p)->(%p)\n", This, loader); + + if (!loader) + return E_INVALIDARG; + + for (i = 0; i < This->file_loader_count; i++) + if (This->file_loaders[i] == loader) + return DWRITE_E_ALREADYREGISTERED; + else if (This->file_loaders[i] == NULL) + break; + + if (i == This->file_loader_count) + { + IDWriteFontFileLoader **new_list = NULL; + int new_count = 0; + + new_count = This->file_loader_count * 2; + new_list = heap_realloc(This->file_loaders, new_count * sizeof(*This->file_loaders)); + + if (!new_list) + return E_OUTOFMEMORY; + else + { + This->file_loader_count = new_count; + This->file_loaders = new_list; + } + } + IDWriteFontFileLoader_AddRef(loader); + This->file_loaders[i] = loader; + + return S_OK; } static HRESULT WINAPI dwritefactory_UnregisterFontFileLoader(IDWriteFactory *iface, IDWriteFontFileLoader *loader) { + int i; struct dwritefactory *This = impl_from_IDWriteFactory(iface); - FIXME("(%p)->(%p): stub\n", This, loader); - return E_NOTIMPL; + TRACE("(%p)->(%p)\n", This, loader); + + for (i = 0; i < This->file_loader_count; i++) + if (This->file_loaders[i] == loader) break; + if (i == This->file_loader_count) + return E_INVALIDARG; + IDWriteFontFileLoader_Release(This->file_loaders[i]); + This->file_loaders[i] = NULL; + + return S_OK; } static HRESULT WINAPI dwritefactory_CreateTextFormat(IDWriteFactory *iface, WCHAR const* family_name, @@ -687,6 +732,8 @@ HRESULT WINAPI DWriteCreateFactory(DWRITE_FACTORY_TYPE type, REFIID riid, IUnkno This->ref = 1; This->loader_count = 2; This->loaders = heap_alloc_zero(sizeof(*This->loaders) * 2); + This->file_loader_count = 2; + This->file_loaders = heap_alloc_zero(sizeof(*This->file_loaders) * 2); *factory = (IUnknown*)&This->IDWriteFactory_iface; diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c index 6366817..243af9f 100644 --- a/dlls/dwrite/tests/font.c +++ b/dlls/dwrite/tests/font.c @@ -722,6 +722,64 @@ static void test_CustomFontCollection(void) ok(hr == S_OK, "got 0x%08x\n", hr); } +static HRESULT WINAPI fontfileloader_QueryInterface(IDWriteFontFileLoader *iface, REFIID riid, void **obj) +{ + if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDWriteFontFileLoader)) + { + *obj = iface; + IDWriteFontFileLoader_AddRef(iface); + return S_OK; + } + + *obj = NULL; + return E_NOINTERFACE; +} + +static ULONG WINAPI fontfileloader_AddRef(IDWriteFontFileLoader *iface) +{ + return 2; +} + +static ULONG WINAPI fontfileloader_Release(IDWriteFontFileLoader *iface) +{ + return 1; +} + +static HRESULT WINAPI fontfileloader_CreateStreamFromKey(IDWriteFontFileLoader *iface, const void *fontFileReferenceKey, UINT32 fontFileReferenceKeySize, IDWriteFontFileStream **fontFileStream) +{ + return 0x8faecafe; +} + +static const struct IDWriteFontFileLoaderVtbl dwritefontfileloadervtbl = { + fontfileloader_QueryInterface, + fontfileloader_AddRef, + fontfileloader_Release, + fontfileloader_CreateStreamFromKey +}; + +static void test_FontLoader(void) +{ + IDWriteFontFileLoader floader = { &dwritefontfileloadervtbl }; + IDWriteFontFileLoader floader2 = { &dwritefontfileloadervtbl }; + HRESULT hr; + + hr = IDWriteFactory_RegisterFontFileLoader(factory, NULL); + ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + hr = IDWriteFactory_RegisterFontFileLoader(factory, &floader); + ok(hr == S_OK, "got 0x%08x\n", hr); + hr = IDWriteFactory_RegisterFontFileLoader(factory, &floader2); + ok(hr == S_OK, "got 0x%08x\n", hr); + hr = IDWriteFactory_RegisterFontFileLoader(factory, &floader); + ok(hr == DWRITE_E_ALREADYREGISTERED, "got 0x%08x\n", hr); + + hr = IDWriteFactory_UnregisterFontFileLoader(factory, &floader); + ok(hr == S_OK, "got 0x%08x\n", hr); + hr = IDWriteFactory_UnregisterFontFileLoader(factory, &floader); + ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + hr = IDWriteFactory_UnregisterFontFileLoader(factory, &floader2); + ok(hr == S_OK, "got 0x%08x\n", hr); +} + START_TEST(font) { HRESULT hr; @@ -743,6 +801,7 @@ START_TEST(font) test_system_fontcollection(); test_ConvertFontFaceToLOGFONT(); test_CustomFontCollection(); + test_FontLoader(); IDWriteFactory_Release(factory); }
1
0
0
0
Sebastian Lackner : server: Implement set_named_pipe_info wineserver call for NtSetInformationFile/ FilePipeInformation.
by Alexandre Julliard
20 Aug '14
20 Aug '14
Module: wine Branch: master Commit: 82ce3fdcfd1a5d8bfe24d58dcc51ddc3a1dea040 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=82ce3fdcfd1a5d8bfe24d58dc…
Author: Sebastian Lackner <sebastian(a)fds-team.de> Date: Mon Aug 11 17:06:49 2014 +0200 server: Implement set_named_pipe_info wineserver call for NtSetInformationFile/FilePipeInformation. Based on a patch by Adam Martinson. --- dlls/ntdll/file.c | 23 +++++++++++++++++++++++ include/wine/server_protocol.h | 17 ++++++++++++++++- server/named_pipe.c | 38 ++++++++++++++++++++++++++++++++++++++ server/protocol.def | 7 ++++++- server/request.h | 5 +++++ server/trace.c | 9 +++++++++ 6 files changed, 97 insertions(+), 2 deletions(-) diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c index 2ae8bee..92d9829 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c @@ -2335,6 +2335,29 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io, else io->u.Status = STATUS_INVALID_PARAMETER_3; break; + case FilePipeInformation: + if (len >= sizeof(FILE_PIPE_INFORMATION)) + { + FILE_PIPE_INFORMATION *info = ptr; + + if ((info->CompletionMode | info->ReadMode) & ~1) + { + io->u.Status = STATUS_INVALID_PARAMETER; + break; + } + + SERVER_START_REQ( set_named_pipe_info ) + { + req->handle = wine_server_obj_handle( handle ); + req->flags = (info->CompletionMode ? NAMED_PIPE_NONBLOCKING_MODE : 0) | + (info->ReadMode ? NAMED_PIPE_MESSAGE_STREAM_READ : 0); + io->u.Status = wine_server_call( req ); + } + SERVER_END_REQ; + } + else io->u.Status = STATUS_INVALID_PARAMETER_3; + break; + case FileMailslotSetInformation: { FILE_MAILSLOT_SET_INFORMATION *info = ptr; diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index 57ab839..cc966f2 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -3189,6 +3189,18 @@ struct get_named_pipe_info_reply }; +struct set_named_pipe_info_request +{ + struct request_header __header; + obj_handle_t handle; + unsigned int flags; + char __pad_20[4]; +}; +struct set_named_pipe_info_reply +{ + struct reply_header __header; +}; + struct create_window_request { @@ -5203,6 +5215,7 @@ enum request REQ_get_ioctl_result, REQ_create_named_pipe, REQ_get_named_pipe_info, + REQ_set_named_pipe_info, REQ_create_window, REQ_destroy_window, REQ_get_desktop_window, @@ -5464,6 +5477,7 @@ union generic_request struct get_ioctl_result_request get_ioctl_result_request; struct create_named_pipe_request create_named_pipe_request; struct get_named_pipe_info_request get_named_pipe_info_request; + struct set_named_pipe_info_request set_named_pipe_info_request; struct create_window_request create_window_request; struct destroy_window_request destroy_window_request; struct get_desktop_window_request get_desktop_window_request; @@ -5723,6 +5737,7 @@ union generic_reply struct get_ioctl_result_reply get_ioctl_result_reply; struct create_named_pipe_reply create_named_pipe_reply; struct get_named_pipe_info_reply get_named_pipe_info_reply; + struct set_named_pipe_info_reply set_named_pipe_info_reply; struct create_window_reply create_window_reply; struct destroy_window_reply destroy_window_reply; struct get_desktop_window_reply get_desktop_window_reply; @@ -5834,6 +5849,6 @@ union generic_reply struct set_suspend_context_reply set_suspend_context_reply; }; -#define SERVER_PROTOCOL_VERSION 456 +#define SERVER_PROTOCOL_VERSION 457 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff --git a/server/named_pipe.c b/server/named_pipe.c index d864478..3750d25 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -1046,3 +1046,41 @@ DECL_HANDLER(get_named_pipe_info) release_object(server); } } + +DECL_HANDLER(set_named_pipe_info) +{ + struct pipe_server *server; + struct pipe_client *client = NULL; + + server = get_pipe_server_obj( current->process, req->handle, FILE_WRITE_ATTRIBUTES ); + if (!server) + { + if (get_error() != STATUS_OBJECT_TYPE_MISMATCH) + return; + + clear_error(); + client = (struct pipe_client *)get_handle_obj( current->process, req->handle, + 0, &pipe_client_ops ); + if (!client) return; + server = client->server; + } + + if ((req->flags & ~(NAMED_PIPE_MESSAGE_STREAM_READ | NAMED_PIPE_NONBLOCKING_MODE)) || + ((req->flags & NAMED_PIPE_MESSAGE_STREAM_READ) && !(server->pipe->flags & NAMED_PIPE_MESSAGE_STREAM_WRITE))) + { + set_error( STATUS_INVALID_PARAMETER ); + } + else if (client) + { + client->pipe_flags = server->pipe->flags | req->flags; + } + else + { + server->pipe_flags = server->pipe->flags | req->flags; + } + + if (client) + release_object(client); + else + release_object(server); +} diff --git a/server/protocol.def b/server/protocol.def index a8c1fb9..c9270ea 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -2294,7 +2294,7 @@ enum message_type #define NAMED_PIPE_NONBLOCKING_MODE 0x0004 #define NAMED_PIPE_SERVER_END 0x8000 - +/* Get named pipe information by handle */ @REQ(get_named_pipe_info) obj_handle_t handle; @REPLY @@ -2306,6 +2306,11 @@ enum message_type unsigned int insize; @END +/* Set named pipe information by handle */ +@REQ(set_named_pipe_info) + obj_handle_t handle; + unsigned int flags; +@END /* Create a window */ @REQ(create_window) diff --git a/server/request.h b/server/request.h index e25e327..c75a636 100644 --- a/server/request.h +++ b/server/request.h @@ -251,6 +251,7 @@ DECL_HANDLER(ioctl); DECL_HANDLER(get_ioctl_result); DECL_HANDLER(create_named_pipe); DECL_HANDLER(get_named_pipe_info); +DECL_HANDLER(set_named_pipe_info); DECL_HANDLER(create_window); DECL_HANDLER(destroy_window); DECL_HANDLER(get_desktop_window); @@ -511,6 +512,7 @@ static const req_handler req_handlers[REQ_NB_REQUESTS] = (req_handler)req_get_ioctl_result, (req_handler)req_create_named_pipe, (req_handler)req_get_named_pipe_info, + (req_handler)req_set_named_pipe_info, (req_handler)req_create_window, (req_handler)req_destroy_window, (req_handler)req_get_desktop_window, @@ -1536,6 +1538,9 @@ C_ASSERT( FIELD_OFFSET(struct get_named_pipe_info_reply, instances) == 20 ); C_ASSERT( FIELD_OFFSET(struct get_named_pipe_info_reply, outsize) == 24 ); C_ASSERT( FIELD_OFFSET(struct get_named_pipe_info_reply, insize) == 28 ); C_ASSERT( sizeof(struct get_named_pipe_info_reply) == 32 ); +C_ASSERT( FIELD_OFFSET(struct set_named_pipe_info_request, handle) == 12 ); +C_ASSERT( FIELD_OFFSET(struct set_named_pipe_info_request, flags) == 16 ); +C_ASSERT( sizeof(struct set_named_pipe_info_request) == 24 ); C_ASSERT( FIELD_OFFSET(struct create_window_request, parent) == 12 ); C_ASSERT( FIELD_OFFSET(struct create_window_request, owner) == 16 ); C_ASSERT( FIELD_OFFSET(struct create_window_request, atom) == 20 ); diff --git a/server/trace.c b/server/trace.c index 4834354..cb8da0c 100644 --- a/server/trace.c +++ b/server/trace.c @@ -2776,6 +2776,12 @@ static void dump_get_named_pipe_info_reply( const struct get_named_pipe_info_rep fprintf( stderr, ", insize=%08x", req->insize ); } +static void dump_set_named_pipe_info_request( const struct set_named_pipe_info_request *req ) +{ + fprintf( stderr, " handle=%04x", req->handle ); + fprintf( stderr, ", flags=%08x", req->flags ); +} + static void dump_create_window_request( const struct create_window_request *req ) { fprintf( stderr, " parent=%08x", req->parent ); @@ -4226,6 +4232,7 @@ static const dump_func req_dumpers[REQ_NB_REQUESTS] = { (dump_func)dump_get_ioctl_result_request, (dump_func)dump_create_named_pipe_request, (dump_func)dump_get_named_pipe_info_request, + (dump_func)dump_set_named_pipe_info_request, (dump_func)dump_create_window_request, (dump_func)dump_destroy_window_request, (dump_func)dump_get_desktop_window_request, @@ -4483,6 +4490,7 @@ static const dump_func reply_dumpers[REQ_NB_REQUESTS] = { (dump_func)dump_get_ioctl_result_reply, (dump_func)dump_create_named_pipe_reply, (dump_func)dump_get_named_pipe_info_reply, + NULL, (dump_func)dump_create_window_reply, NULL, (dump_func)dump_get_desktop_window_reply, @@ -4740,6 +4748,7 @@ static const char * const req_names[REQ_NB_REQUESTS] = { "get_ioctl_result", "create_named_pipe", "get_named_pipe_info", + "set_named_pipe_info", "create_window", "destroy_window", "get_desktop_window",
1
0
0
0
Sebastian Lackner : server: Store pipe_flags in a separate variable for both server and client of named pipes.
by Alexandre Julliard
20 Aug '14
20 Aug '14
Module: wine Branch: master Commit: 2e95f370d4a162b4f6955bc582fd8f551c79350a URL:
http://source.winehq.org/git/wine.git/?a=commit;h=2e95f370d4a162b4f6955bc58…
Author: Sebastian Lackner <sebastian(a)fds-team.de> Date: Mon Aug 11 15:35:50 2014 +0200 server: Store pipe_flags in a separate variable for both server and client of named pipes. --- server/named_pipe.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/server/named_pipe.c b/server/named_pipe.c index 4b23ba2..d864478 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -77,6 +77,7 @@ struct pipe_server struct timeout_user *flush_poll; struct event *event; unsigned int options; /* pipe options */ + unsigned int pipe_flags; }; struct pipe_client @@ -85,6 +86,7 @@ struct pipe_client struct fd *fd; /* pipe file descriptor */ struct pipe_server *server; /* server that this client is connected to */ unsigned int flags; /* file flags */ + unsigned int pipe_flags; }; struct named_pipe @@ -737,7 +739,8 @@ static struct pipe_server *get_pipe_server_obj( struct process *process, return (struct pipe_server *) obj; } -static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned int options ) +static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned int options, + unsigned int pipe_flags ) { struct pipe_server *server; @@ -750,6 +753,7 @@ static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned server->client = NULL; server->flush_poll = NULL; server->options = options; + server->pipe_flags = pipe_flags; list_add_head( &pipe->servers, &server->entry ); grab_object( pipe ); @@ -762,7 +766,7 @@ static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned return server; } -static struct pipe_client *create_pipe_client( unsigned int flags ) +static struct pipe_client *create_pipe_client( unsigned int flags, unsigned int pipe_flags ) { struct pipe_client *client; @@ -773,6 +777,7 @@ static struct pipe_client *create_pipe_client( unsigned int flags ) client->fd = NULL; client->server = NULL; client->flags = flags; + client->pipe_flags = pipe_flags; return client; } @@ -822,7 +827,7 @@ static struct object *named_pipe_open_file( struct object *obj, unsigned int acc return NULL; } - if ((client = create_pipe_client( options ))) + if ((client = create_pipe_client( options, pipe->flags ))) { if (!socketpair( PF_UNIX, SOCK_STREAM, 0, fds )) { @@ -977,7 +982,7 @@ DECL_HANDLER(create_named_pipe) pipe->outsize = req->outsize; pipe->maxinstances = req->maxinstances; pipe->timeout = req->timeout; - pipe->flags = req->flags; + pipe->flags = req->flags & NAMED_PIPE_MESSAGE_STREAM_WRITE; pipe->sharing = req->sharing; } else @@ -997,7 +1002,7 @@ DECL_HANDLER(create_named_pipe) clear_error(); /* clear the name collision */ } - server = create_pipe_server( pipe, req->options ); + server = create_pipe_server( pipe, req->options, req->flags ); if (server) { reply->handle = alloc_handle( current->process, server, req->access, req->attributes ); @@ -1026,7 +1031,7 @@ DECL_HANDLER(get_named_pipe_info) server = client->server; } - reply->flags = server->pipe->flags; + reply->flags = client ? client->pipe_flags : server->pipe_flags; reply->sharing = server->pipe->sharing; reply->maxinstances = server->pipe->maxinstances; reply->instances = server->pipe->instances;
1
0
0
0
Adam Martinson : ntdll: Implement FILE_PIPE_INFORMATION for NtQueryInformationFile.
by Alexandre Julliard
20 Aug '14
20 Aug '14
Module: wine Branch: master Commit: 55e10e4ae26a9bf9a92f35c189c2a246103c09a6 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=55e10e4ae26a9bf9a92f35c18…
Author: Adam Martinson <adam.r.martinson(a)gmail.com> Date: Mon Aug 11 16:22:02 2014 +0200 ntdll: Implement FILE_PIPE_INFORMATION for NtQueryInformationFile. --- dlls/ntdll/file.c | 22 ++++++++++++++++++++-- include/winternl.h | 11 +++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c index d2efcc1..2ae8bee 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c @@ -1981,7 +1981,7 @@ NTSTATUS WINAPI NtQueryInformationFile( HANDLE hFile, PIO_STATUS_BLOCK io, sizeof(FILE_END_OF_FILE_INFORMATION), /* FileEndOfFileInformation */ 0, /* FileAlternateNameInformation */ sizeof(FILE_STREAM_INFORMATION)-sizeof(WCHAR), /* FileStreamInformation */ - 0, /* FilePipeInformation */ + sizeof(FILE_PIPE_INFORMATION), /* FilePipeInformation */ sizeof(FILE_PIPE_LOCAL_INFORMATION), /* FilePipeLocalInformation */ 0, /* FilePipeRemoteInformation */ sizeof(FILE_MAILSLOT_QUERY_INFORMATION), /* FileMailslotQueryInformation */ @@ -2032,7 +2032,7 @@ NTSTATUS WINAPI NtQueryInformationFile( HANDLE hFile, PIO_STATUS_BLOCK io, if (len < info_sizes[class]) return io->u.Status = STATUS_INFO_LENGTH_MISMATCH; - if (class != FilePipeLocalInformation) + if (class != FilePipeInformation && class != FilePipeLocalInformation) { if ((io->u.Status = server_get_unix_fd( hFile, 0, &fd, &needs_close, NULL, NULL ))) return io->u.Status; @@ -2146,6 +2146,24 @@ NTSTATUS WINAPI NtQueryInformationFile( HANDLE hFile, PIO_STATUS_BLOCK io, } } break; + case FilePipeInformation: + { + FILE_PIPE_INFORMATION* pi = ptr; + + SERVER_START_REQ( get_named_pipe_info ) + { + req->handle = wine_server_obj_handle( hFile ); + if (!(io->u.Status = wine_server_call( req ))) + { + pi->ReadMode = (reply->flags & NAMED_PIPE_MESSAGE_STREAM_READ) ? + FILE_PIPE_MESSAGE_MODE : FILE_PIPE_BYTE_STREAM_MODE; + pi->CompletionMode = (reply->flags & NAMED_PIPE_NONBLOCKING_MODE) ? + FILE_PIPE_COMPLETE_OPERATION : FILE_PIPE_QUEUE_OPERATION; + } + } + SERVER_END_REQ; + } + break; case FilePipeLocalInformation: { FILE_PIPE_LOCAL_INFORMATION* pli = ptr; diff --git a/include/winternl.h b/include/winternl.h index a95a016..95951e2 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -623,6 +623,11 @@ typedef struct _FILE_MAILSLOT_SET_INFORMATION { LARGE_INTEGER ReadTimeout; } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION; +typedef struct _FILE_PIPE_INFORMATION { + ULONG ReadMode; + ULONG CompletionMode; +} FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION; + typedef struct _FILE_PIPE_LOCAL_INFORMATION { ULONG NamedPipeType; ULONG NamedPipeConfiguration; @@ -1602,6 +1607,12 @@ typedef struct _RTL_HANDLE_TABLE /* options for pipe's type */ #define FILE_PIPE_TYPE_MESSAGE 0x00000001 #define FILE_PIPE_TYPE_BYTE 0x00000000 +/* options for pipe's message mode */ +#define FILE_PIPE_MESSAGE_MODE 0x00000001 +#define FILE_PIPE_BYTE_STREAM_MODE 0x00000000 +/* options for pipe's blocking mode */ +#define FILE_PIPE_COMPLETE_OPERATION 0x00000001 +#define FILE_PIPE_QUEUE_OPERATION 0x00000000 /* and client / server end */ #define FILE_PIPE_SERVER_END 0x00000001 #define FILE_PIPE_CLIENT_END 0x00000000
1
0
0
0
Andrei Slăvoiu : wined3d: Replace vendor specific callbacks with generic code that uses vendor specific arrays.
by Alexandre Julliard
20 Aug '14
20 Aug '14
Module: wine Branch: master Commit: 2c9c968a144a343b82ec2b01ade0888fb5b92d9c URL:
http://source.winehq.org/git/wine.git/?a=commit;h=2c9c968a144a343b82ec2b01a…
Author: Andrei Slăvoiu <andrei.slavoiu(a)gmail.com> Date: Wed Aug 13 23:00:05 2014 +0300 wined3d: Replace vendor specific callbacks with generic code that uses vendor specific arrays. --- dlls/wined3d/directx.c | 86 +++++++++++++++++++++++++------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index fe98bab..9f00dcf 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -88,6 +88,7 @@ enum wined3d_d3d_level WINED3D_D3D_LEVEL_9_SM3, WINED3D_D3D_LEVEL_10, WINED3D_D3D_LEVEL_11, + WINED3D_D3D_LEVEL_COUNT }; /* The d3d device ID */ @@ -2190,45 +2191,43 @@ intel_gl_vendor_table[] = {GL_VENDOR_MESA, "Mesa Intel driver", cards_intel, ARRAY_SIZE(cards_intel)}, }; -static enum wined3d_pci_device select_card_fallback_nvidia(const struct wined3d_gl_info *gl_info) +static const enum wined3d_pci_device +card_fallback_nvidia[] = { - enum wined3d_d3d_level d3d_level = d3d_level_from_gl_info(gl_info); - if (d3d_level >= WINED3D_D3D_LEVEL_10) - return CARD_NVIDIA_GEFORCE_8800GTX; - if (d3d_level >= WINED3D_D3D_LEVEL_9_SM3) - return CARD_NVIDIA_GEFORCE_6800; - if (d3d_level >= WINED3D_D3D_LEVEL_9_SM2) - return CARD_NVIDIA_GEFORCEFX_5800; - if (d3d_level >= WINED3D_D3D_LEVEL_8) - return CARD_NVIDIA_GEFORCE3; - if (d3d_level >= WINED3D_D3D_LEVEL_7) - return CARD_NVIDIA_GEFORCE; - if (d3d_level >= WINED3D_D3D_LEVEL_6) - return CARD_NVIDIA_RIVA_TNT; - return CARD_NVIDIA_RIVA_128; -} - -static enum wined3d_pci_device select_card_fallback_amd(const struct wined3d_gl_info *gl_info) + CARD_NVIDIA_RIVA_128, /* D3D5 */ + CARD_NVIDIA_RIVA_TNT, /* D3D6 */ + CARD_NVIDIA_GEFORCE, /* D3D7 */ + CARD_NVIDIA_GEFORCE3, /* D3D8 */ + CARD_NVIDIA_GEFORCEFX_5800, /* D3D9_SM2 */ + CARD_NVIDIA_GEFORCE_6800, /* D3D9_SM3 */ + CARD_NVIDIA_GEFORCE_8800GTX, /* D3D10 */ + CARD_NVIDIA_GEFORCE_GTX470, /* D3D11 */ +}, +card_fallback_amd[] = { - enum wined3d_d3d_level d3d_level = d3d_level_from_gl_info(gl_info); - if (d3d_level >= WINED3D_D3D_LEVEL_10) - return CARD_AMD_RADEON_HD2900; - if (d3d_level >= WINED3D_D3D_LEVEL_9_SM2) - return CARD_AMD_RADEON_9500; - if (d3d_level >= WINED3D_D3D_LEVEL_8) - return CARD_AMD_RADEON_8500; - if (d3d_level >= WINED3D_D3D_LEVEL_7) - return CARD_AMD_RADEON_7200; - return CARD_AMD_RAGE_128PRO; -} - -static enum wined3d_pci_device select_card_fallback_intel(const struct wined3d_gl_info *gl_info) + CARD_AMD_RAGE_128PRO, /* D3D5 */ + CARD_AMD_RAGE_128PRO, /* D3D6 */ + CARD_AMD_RADEON_7200, /* D3D7 */ + CARD_AMD_RADEON_8500, /* D3D8 */ + CARD_AMD_RADEON_9500, /* D3D9_SM2 */ + CARD_AMD_RADEON_X1600, /* D3D9_SM3 */ + CARD_AMD_RADEON_HD2900, /* D3D10 */ + CARD_AMD_RADEON_HD5600, /* D3D11 */ +}, +card_fallback_intel[] = { - enum wined3d_d3d_level d3d_level = d3d_level_from_gl_info(gl_info); - if (d3d_level >= WINED3D_D3D_LEVEL_10) - return CARD_INTEL_G45; - return CARD_INTEL_915G; -} + CARD_INTEL_915G, /* D3D5 */ + CARD_INTEL_915G, /* D3D6 */ + CARD_INTEL_915G, /* D3D7 */ + CARD_INTEL_915G, /* D3D8 */ + CARD_INTEL_915G, /* D3D9_SM2 */ + CARD_INTEL_915G, /* D3D9_SM3 */ + CARD_INTEL_G45, /* D3D10 */ + CARD_INTEL_IVBD, /* D3D11 */ +}; +C_ASSERT(ARRAY_SIZE(card_fallback_nvidia) == WINED3D_D3D_LEVEL_COUNT); +C_ASSERT(ARRAY_SIZE(card_fallback_amd) == WINED3D_D3D_LEVEL_COUNT); +C_ASSERT(ARRAY_SIZE(card_fallback_intel) == WINED3D_D3D_LEVEL_COUNT); static enum wined3d_pci_device select_card_handler(const struct gl_vendor_selection *table, unsigned int table_size, enum wined3d_gl_vendor gl_vendor, const char *gl_renderer) @@ -2261,22 +2260,22 @@ static const struct const char *description; /* Description of the card selector i.e. Apple OS/X Intel */ const struct gl_vendor_selection *gl_vendor_selection; unsigned int gl_vendor_count; - enum wined3d_pci_device (*select_card_fallback)(const struct wined3d_gl_info *gl_info); + const enum wined3d_pci_device *card_fallback; /* An array with D3D_LEVEL_COUNT elements */ } card_vendor_table[] = { {HW_VENDOR_AMD, "AMD", amd_gl_vendor_table, sizeof(amd_gl_vendor_table) / sizeof(*amd_gl_vendor_table), - select_card_fallback_amd}, + card_fallback_amd}, {HW_VENDOR_NVIDIA, "Nvidia", nvidia_gl_vendor_table, sizeof(nvidia_gl_vendor_table) / sizeof(*nvidia_gl_vendor_table), - select_card_fallback_nvidia}, + card_fallback_nvidia}, {HW_VENDOR_VMWARE, "VMware", vmware_gl_vendor_table, sizeof(vmware_gl_vendor_table) / sizeof(*vmware_gl_vendor_table), - select_card_fallback_amd}, + card_fallback_amd}, {HW_VENDOR_INTEL, "Intel", intel_gl_vendor_table, sizeof(intel_gl_vendor_table) / sizeof(*intel_gl_vendor_table), - select_card_fallback_intel}, + card_fallback_intel}, }; @@ -2334,6 +2333,7 @@ static enum wined3d_pci_device wined3d_guess_card(const struct wined3d_gl_info * * memory can be overruled using a registry setting. */ unsigned int i; + enum wined3d_d3d_level d3d_level = d3d_level_from_gl_info(gl_info); enum wined3d_pci_device device; for (i = 0; i < (sizeof(card_vendor_table) / sizeof(*card_vendor_table)); ++i) @@ -2348,7 +2348,7 @@ static enum wined3d_pci_device wined3d_guess_card(const struct wined3d_gl_info * return device; TRACE("Unrecognized renderer %s, falling back to default.\n", debugstr_a(gl_renderer)); - return card_vendor_table[i].select_card_fallback(gl_info); + return card_vendor_table[i].card_fallback[d3d_level]; } FIXME("No card selector available for card vendor %04x (using GL_RENDERER %s).\n", @@ -2356,7 +2356,7 @@ static enum wined3d_pci_device wined3d_guess_card(const struct wined3d_gl_info * /* Default to generic Nvidia hardware based on the supported OpenGL extensions. */ *card_vendor = HW_VENDOR_NVIDIA; - return select_card_fallback_nvidia(gl_info); + return card_fallback_nvidia[d3d_level]; } static const struct wined3d_vertex_pipe_ops *select_vertex_implementation(const struct wined3d_gl_info *gl_info,
1
0
0
0
Henri Verbeet : wined3d: Keep a reference to the backbuffer textures instead of the surfaces in the swapchain.
by Alexandre Julliard
20 Aug '14
20 Aug '14
Module: wine Branch: master Commit: d3387cf77b056581ab5e82b33f11fc670dea67aa URL:
http://source.winehq.org/git/wine.git/?a=commit;h=d3387cf77b056581ab5e82b33…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Wed Aug 20 13:20:03 2014 +0200 wined3d: Keep a reference to the backbuffer textures instead of the surfaces in the swapchain. --- dlls/wined3d/context.c | 2 +- dlls/wined3d/device.c | 12 ++++++++---- dlls/wined3d/surface.c | 7 ++++--- dlls/wined3d/swapchain.c | 29 +++++++++++++++++------------ dlls/wined3d/wined3d_private.h | 2 +- 5 files changed, 31 insertions(+), 21 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=d3387cf77b056581ab5e8…
1
0
0
0
Henri Verbeet : wined3d: Keep a reference to the frontbuffer texture instead of the surface in the swapchain.
by Alexandre Julliard
20 Aug '14
20 Aug '14
Module: wine Branch: master Commit: ec87407e7c31451aab636f1b586edaf3ce38a6a1 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=ec87407e7c31451aab636f1b5…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Wed Aug 20 13:20:02 2014 +0200 wined3d: Keep a reference to the frontbuffer texture instead of the surface in the swapchain. --- dlls/wined3d/arb_program_shader.c | 2 +- dlls/wined3d/context.c | 4 ++-- dlls/wined3d/device.c | 11 +++++---- dlls/wined3d/resource.c | 2 +- dlls/wined3d/surface.c | 23 ++++++++++-------- dlls/wined3d/swapchain.c | 49 ++++++++++++++++++++++----------------- dlls/wined3d/wined3d_private.h | 2 +- 7 files changed, 53 insertions(+), 40 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=ec87407e7c31451aab636…
1
0
0
0
Henri Verbeet : wined3d: Use the texture draw binding instead of the surface draw binding.
by Alexandre Julliard
20 Aug '14
20 Aug '14
Module: wine Branch: master Commit: 415b8037206b1d4c104d9623037458739f6cfdf5 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=415b8037206b1d4c104d96230…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Wed Aug 20 13:20:01 2014 +0200 wined3d: Use the texture draw binding instead of the surface draw binding. --- dlls/wined3d/arb_program_shader.c | 4 ++-- dlls/wined3d/context.c | 6 +++--- dlls/wined3d/device.c | 12 +++++++----- dlls/wined3d/drawprim.c | 10 +++++----- dlls/wined3d/surface.c | 24 ++++++++++++------------ dlls/wined3d/swapchain.c | 10 +++++----- dlls/wined3d/texture.c | 10 ++-------- 7 files changed, 36 insertions(+), 40 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=415b8037206b1d4c104d9…
1
0
0
0
Henri Verbeet : wined3d: Move the "swapchain" field from struct wined3d_surface to struct wined3d_texture.
by Alexandre Julliard
20 Aug '14
20 Aug '14
Module: wine Branch: master Commit: aa7016054ad2b74f63b1855e043ce19188fd0a98 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=aa7016054ad2b74f63b1855e0…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Wed Aug 20 13:20:00 2014 +0200 wined3d: Move the "swapchain" field from struct wined3d_surface to struct wined3d_texture. --- dlls/wined3d/arb_program_shader.c | 5 ++-- dlls/wined3d/context.c | 10 +++---- dlls/wined3d/device.c | 2 +- dlls/wined3d/resource.c | 10 +++---- dlls/wined3d/surface.c | 55 ++++++++++++++------------------------- dlls/wined3d/swapchain.c | 12 ++++----- dlls/wined3d/texture.c | 29 +++++++++++++++++++-- dlls/wined3d/wined3d_private.h | 5 ++-- 8 files changed, 70 insertions(+), 58 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=aa7016054ad2b74f63b18…
1
0
0
0
← Newer
1
...
8
9
10
11
12
13
14
...
31
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
Results per page:
10
25
50
100
200