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
November 2019
----- 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
1 participants
895 discussions
Start a n
N
ew thread
Nikolay Sivov : mfreadwrite/tests: Add a test for reading from delected stream.
by Alexandre Julliard
20 Nov '19
20 Nov '19
Module: wine Branch: master Commit: 979847e3a25b699a31584798513713747a069ddd URL:
https://source.winehq.org/git/wine.git/?a=commit;h=979847e3a25b699a31584798…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Wed Nov 20 13:12:18 2019 +0300 mfreadwrite/tests: Add a test for reading from delected stream. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mfreadwrite/main.c | 2 ++ dlls/mfreadwrite/tests/mfplat.c | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/dlls/mfreadwrite/main.c b/dlls/mfreadwrite/main.c index bffe5cc47f..56ec036089 100644 --- a/dlls/mfreadwrite/main.c +++ b/dlls/mfreadwrite/main.c @@ -894,6 +894,8 @@ static HRESULT source_reader_read_sample(struct source_reader *reader, DWORD ind *stream_flags = MF_SOURCE_READERF_ERROR; if (actual_index) *actual_index = index; + if (timestamp) + *timestamp = 0; return hr; } diff --git a/dlls/mfreadwrite/tests/mfplat.c b/dlls/mfreadwrite/tests/mfplat.c index 081d94c7d5..9678f64efe 100644 --- a/dlls/mfreadwrite/tests/mfplat.c +++ b/dlls/mfreadwrite/tests/mfplat.c @@ -891,6 +891,19 @@ todo_wine ok(!!sample, "Expected sample object.\n"); IMFSample_Release(sample); + /* Request from deselected stream. */ + hr = IMFSourceReader_SetStreamSelection(reader, 1, FALSE); + ok(hr == S_OK, "Failed to select a stream, hr %#x.\n", hr); + + actual_index = 0; + stream_flags = 0; + hr = IMFSourceReader_ReadSample(reader, 1, 0, &actual_index, &stream_flags, ×tamp, &sample); + ok(hr == MF_E_INVALIDREQUEST, "Unexpected hr %#x.\n", hr); + ok(actual_index == 1, "Unexpected stream index %u\n", actual_index); + ok(stream_flags == MF_SOURCE_READERF_ERROR, "Unexpected stream flags %#x.\n", stream_flags); + ok(timestamp == 0, "Unexpected timestamp.\n"); + ok(!sample, "Expected sample object.\n"); + IMFSourceReader_Release(reader); IMFMediaSource_Release(source);
1
0
0
0
Nikolay Sivov : mfreadwrite: Start media source when stream selection changes.
by Alexandre Julliard
20 Nov '19
20 Nov '19
Module: wine Branch: master Commit: 8f0570b3d705dde76e6951187b34aeaac2ffa666 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=8f0570b3d705dde76e695118…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Wed Nov 20 13:12:17 2019 +0300 mfreadwrite: Start media source when stream selection changes. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mfreadwrite/main.c | 59 +++++++++++++++++++++++++++++++++-------- dlls/mfreadwrite/tests/mfplat.c | 50 ++++++++++++++++++++++++---------- 2 files changed, 84 insertions(+), 25 deletions(-) diff --git a/dlls/mfreadwrite/main.c b/dlls/mfreadwrite/main.c index f24de690bc..bffe5cc47f 100644 --- a/dlls/mfreadwrite/main.c +++ b/dlls/mfreadwrite/main.c @@ -99,6 +99,8 @@ struct media_stream CONDITION_VARIABLE sample_event; struct list samples; enum media_stream_state state; + BOOL selected; + BOOL presented; }; struct source_reader @@ -820,6 +822,41 @@ static IMFSample *media_stream_pop_sample(struct media_stream *stream, DWORD *st return ret; } +static HRESULT source_reader_start_source(struct source_reader *reader) +{ + BOOL selection_changed = FALSE; + PROPVARIANT position; + HRESULT hr = S_OK; + DWORD i; + + if (reader->source_state == SOURCE_STATE_STARTED) + { + for (i = 0; i < reader->stream_count; ++i) + { + if (FAILED(hr = source_reader_get_stream_selection(reader, i, &reader->streams[i].selected))) + return hr; + selection_changed = reader->streams[i].selected ^ reader->streams[i].presented; + if (selection_changed) + break; + } + } + + position.u.hVal.QuadPart = 0; + if (reader->source_state != SOURCE_STATE_STARTED || selection_changed) + { + position.vt = reader->source_state == SOURCE_STATE_STARTED ? VT_EMPTY : VT_I8; + + /* Update cached stream selection if descriptor was accepted. */ + if (SUCCEEDED(hr = IMFMediaSource_Start(reader->source, reader->descriptor, &GUID_NULL, &position))) + { + for (i = 0; i < reader->stream_count; ++i) + reader->streams[i].presented = reader->streams[i].selected; + } + } + + return hr; +} + static HRESULT source_reader_read_sample(struct source_reader *reader, DWORD index, DWORD flags, DWORD *actual_index, DWORD *stream_flags, LONGLONG *timestamp, IMFSample **sample) { @@ -867,20 +904,23 @@ static HRESULT source_reader_read_sample(struct source_reader *reader, DWORD ind EnterCriticalSection(&stream->cs); - if (!(flags & MF_SOURCE_READER_CONTROLF_DRAIN)) + if (SUCCEEDED(hr = source_reader_start_source(reader))) { - while (list_empty(&stream->samples) && stream->state != STREAM_STATE_EOS) + if (!(flags & MF_SOURCE_READER_CONTROLF_DRAIN)) { - if (stream->stream) + while (list_empty(&stream->samples) && stream->state != STREAM_STATE_EOS) { - if (FAILED(hr = IMFMediaStream_RequestSample(stream->stream, NULL))) - WARN("Sample request failed, hr %#x.\n", hr); + if (stream->stream) + { + if (FAILED(hr = IMFMediaStream_RequestSample(stream->stream, NULL))) + WARN("Sample request failed, hr %#x.\n", hr); + } + SleepConditionVariableCS(&stream->sample_event, &stream->cs, INFINITE); } - SleepConditionVariableCS(&stream->sample_event, &stream->cs, INFINITE); } - } - *sample = media_stream_pop_sample(stream, stream_flags); + *sample = media_stream_pop_sample(stream, stream_flags); + } LeaveCriticalSection(&stream->cs); @@ -913,9 +953,6 @@ static HRESULT WINAPI src_reader_ReadSample(IMFSourceReader *iface, DWORD index, TRACE("%p, %#x, %#x, %p, %p, %p, %p\n", iface, index, flags, actual_index, stream_flags, timestamp, sample); - /* FIXME: probably should happen once */ - IMFMediaSource_Start(reader->source, reader->descriptor, NULL, NULL); - if (reader->async_callback) { if (actual_index || stream_flags || timestamp || sample) diff --git a/dlls/mfreadwrite/tests/mfplat.c b/dlls/mfreadwrite/tests/mfplat.c index 16bb92b80e..081d94c7d5 100644 --- a/dlls/mfreadwrite/tests/mfplat.c +++ b/dlls/mfreadwrite/tests/mfplat.c @@ -351,10 +351,11 @@ static HRESULT WINAPI test_source_Start(IMFMediaSource *iface, IMFPresentationDe PROPVARIANT var; int i; -todo_wine { - ok(time_format && IsEqualGUID(time_format, &GUID_NULL), "Unexpected time format %s.\n", wine_dbgstr_guid(time_format)); - ok(start_position && (start_position->vt == VT_I8 || start_position->vt == VT_EMPTY), "Unexpected position type.\n"); -} + ok(time_format && IsEqualGUID(time_format, &GUID_NULL), "Unexpected time format %s.\n", + wine_dbgstr_guid(time_format)); + ok(start_position && (start_position->vt == VT_I8 || start_position->vt == VT_EMPTY), + "Unexpected position type.\n"); + EnterCriticalSection(&source->cs); event_type = source->state == SOURCE_RUNNING ? MESourceSeeked : MESourceStarted; @@ -823,16 +824,6 @@ static void test_source_reader_from_media_source(void) source = create_test_source(); ok(!!source, "Failed to create test source.\n"); - callback = create_async_callback(); - - hr = MFCreateAttributes(&attributes, 1); - ok(hr == S_OK, "Failed to create attributes object, hr %#x.\n", hr); - - hr = IMFAttributes_SetUnknown(attributes, &MF_SOURCE_READER_ASYNC_CALLBACK, - (IUnknown *)&callback->IMFSourceReaderCallback_iface); - ok(hr == S_OK, "Failed to set attribute value, hr %#x.\n", hr); - IMFSourceReaderCallback_Release(&callback->IMFSourceReaderCallback_iface); - hr = MFCreateSourceReaderFromMediaSource(source, NULL, &reader); ok(hr == S_OK, "Failed to create source reader, hr %#x.\n", hr); @@ -882,10 +873,41 @@ todo_wine IMFSourceReader_Release(reader); IMFMediaSource_Release(source); + /* Request from stream 0. */ + source = create_test_source(); + ok(!!source, "Failed to create test source.\n"); + + hr = MFCreateSourceReaderFromMediaSource(source, NULL, &reader); + ok(hr == S_OK, "Failed to create source reader, hr %#x.\n", hr); + + hr = IMFSourceReader_SetStreamSelection(reader, 0, TRUE); + ok(hr == S_OK, "Failed to select a stream, hr %#x.\n", hr); + + hr = IMFSourceReader_ReadSample(reader, 0, 0, &actual_index, &stream_flags, ×tamp, &sample); + ok(hr == S_OK, "Failed to get a sample, hr %#x.\n", hr); + ok(actual_index == 0, "Unexpected stream index %u\n", actual_index); + ok(!stream_flags, "Unexpected stream flags %#x.\n", stream_flags); + ok(timestamp == 123, "Unexpected timestamp.\n"); + ok(!!sample, "Expected sample object.\n"); + IMFSample_Release(sample); + + IMFSourceReader_Release(reader); + IMFMediaSource_Release(source); + /* Async mode. */ source = create_test_source(); ok(!!source, "Failed to create test source.\n"); + callback = create_async_callback(); + + hr = MFCreateAttributes(&attributes, 1); + ok(hr == S_OK, "Failed to create attributes object, hr %#x.\n", hr); + + hr = IMFAttributes_SetUnknown(attributes, &MF_SOURCE_READER_ASYNC_CALLBACK, + (IUnknown *)&callback->IMFSourceReaderCallback_iface); + ok(hr == S_OK, "Failed to set attribute value, hr %#x.\n", hr); + IMFSourceReaderCallback_Release(&callback->IMFSourceReaderCallback_iface); + hr = MFCreateSourceReaderFromMediaSource(source, attributes, &reader); ok(hr == S_OK, "Failed to create source reader, hr %#x.\n", hr);
1
0
0
0
Sven Baars : gdi32/tests: Fix some test SetDIBitsToDevice RLE8 test failures on Windows 2008+.
by Alexandre Julliard
20 Nov '19
20 Nov '19
Module: wine Branch: master Commit: 742249e91e71c7bdde799dfe560eee191f40b589 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=742249e91e71c7bdde799dfe…
Author: Sven Baars <sven.wine(a)gmail.com> Date: Tue Nov 12 19:41:37 2019 +0100 gdi32/tests: Fix some test SetDIBitsToDevice RLE8 test failures on Windows 2008+. Signed-off-by: Sven Baars <sven.wine(a)gmail.com> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/gdi32/tests/bitmap.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/dlls/gdi32/tests/bitmap.c b/dlls/gdi32/tests/bitmap.c index d651765006..c1651b5a2b 100644 --- a/dlls/gdi32/tests/bitmap.c +++ b/dlls/gdi32/tests/bitmap.c @@ -5532,14 +5532,23 @@ static void test_SetDIBitsToDevice_RLE8(void) info->bmiHeader.biWidth = 2; ret = SetDIBitsToDevice( hdc, 0, 0, 8, 8, 0, 0, 0, 8, rle8_data, info, DIB_RGB_COLORS ); ok( ret == 8, "got %d\n", ret ); - for (i = 0; i < 64; i++) ok( dib_bits[i] == bottom_up[i], "%d: got %08x\n", i, dib_bits[i] ); + if (dib_bits[0] == 0xaaaaaaaa) + { + win_skip("SetDIBitsToDevice is broken on Windows 2008.\n"); + goto cleanup; + } + for (i = 0; i < 64; i += 8) + { + ok( dib_bits[i] == bottom_up[i], "%d: got %08x\n", i, dib_bits[i] ); + ok( dib_bits[i+1] == bottom_up[i+1], "%d: got %08x\n", i+1, dib_bits[i+1] ); + } memset( dib_bits, 0xaa, 64 * 4 ); info->bmiHeader.biWidth = 8; info->bmiHeader.biHeight = 2; ret = SetDIBitsToDevice( hdc, 0, 0, 8, 8, 0, 0, 0, 8, rle8_data, info, DIB_RGB_COLORS ); ok( ret == 2, "got %d\n", ret ); - for (i = 0; i < 64; i++) ok( dib_bits[i] == bottom_up[i], "%d: got %08x\n", i, dib_bits[i] ); + for (i = 0; i < 16; i++) ok( dib_bits[i] == bottom_up[i], "%d: got %08x\n", i, dib_bits[i] ); memset( dib_bits, 0xaa, 64 * 4 ); info->bmiHeader.biHeight = 9; @@ -5671,6 +5680,7 @@ static void test_SetDIBitsToDevice_RLE8(void) for (i = 40; i < 64; i++) ok( dib_bits[i] == 0xaaaaaaaa, "%d: got %08x\n", i, dib_bits[i] ); memset( dib_bits, 0xaa, 64 * 4 ); +cleanup: DeleteDC( hdc ); DeleteObject( dib ); HeapFree( GetProcessHeap(), 0, info );
1
0
0
0
John Chadwick : kernelbase: Fix GetSystemFirmwareTable regression.
by Alexandre Julliard
20 Nov '19
20 Nov '19
Module: wine Branch: master Commit: 9021cca65da6eb6b777518410e82ea5f29e8be51 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=9021cca65da6eb6b77751841…
Author: John Chadwick <john(a)jchw.io> Date: Wed Nov 20 00:40:33 2019 -0800 kernelbase: Fix GetSystemFirmwareTable regression. Regression caused by 71aba33fc68e97d1b49a9207c8fc2ef733b604a7. Signed-off-by: John Chadwick <john(a)jchw.io> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/kernel32/tests/version.c | 1 - dlls/kernelbase/memory.c | 11 ++++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/dlls/kernel32/tests/version.c b/dlls/kernel32/tests/version.c index db42fc5a29..1bb3e20978 100644 --- a/dlls/kernel32/tests/version.c +++ b/dlls/kernel32/tests/version.c @@ -738,7 +738,6 @@ static void test_GetSystemFirmwareTable(void) expected_len -= min_sfti_len; len = pGetSystemFirmwareTable(RSMB, 0, NULL, 0); -todo_wine ok(len == expected_len, "Expected length %u, got %u\n", expected_len, len); smbios_table = HeapAlloc(GetProcessHeap(), 0, expected_len); diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c index 6be399bc97..c93d490e74 100644 --- a/dlls/kernelbase/memory.c +++ b/dlls/kernelbase/memory.c @@ -1161,13 +1161,10 @@ UINT WINAPI GetSystemFirmwareTable( DWORD provider, DWORD id, void *buffer, DWOR info->Action = SystemFirmwareTable_Get; info->TableID = id; - if (set_ntstatus( NtQuerySystemInformation( SystemFirmwareTableInformation, - info, buffer_size, &buffer_size ))) - { - buffer_size -= offsetof( SYSTEM_FIRMWARE_TABLE_INFORMATION, TableBuffer ); - if (buffer_size <= size) memcpy( buffer, info->TableBuffer, buffer_size ); - } - else buffer_size = 0; + set_ntstatus( NtQuerySystemInformation( SystemFirmwareTableInformation, + info, buffer_size, &buffer_size )); + buffer_size -= offsetof( SYSTEM_FIRMWARE_TABLE_INFORMATION, TableBuffer ); + if (buffer_size <= size) memcpy( buffer, info->TableBuffer, buffer_size ); HeapFree( GetProcessHeap(), 0, info ); return buffer_size;
1
0
0
0
John Chadwick : kernel32/tests: Add test for GetSystemFirmwareTable.
by Alexandre Julliard
20 Nov '19
20 Nov '19
Module: wine Branch: master Commit: 2acbe4f0960d95a45e0c79539fd2eca10033e740 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=2acbe4f0960d95a45e0c7953…
Author: John Chadwick <john(a)jchw.io> Date: Wed Nov 20 00:40:32 2019 -0800 kernel32/tests: Add test for GetSystemFirmwareTable. This adds a test to ensure that a typical usage of GetSystemFirmwareTable with a preflight call works correctly. Signed-off-by: John Chadwick <john(a)jchw.io> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/kernel32/tests/version.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dlls/kernel32/tests/version.c b/dlls/kernel32/tests/version.c index c1b7c9c59d..db42fc5a29 100644 --- a/dlls/kernel32/tests/version.c +++ b/dlls/kernel32/tests/version.c @@ -737,6 +737,10 @@ static void test_GetSystemFirmwareTable(void) pNtQuerySystemInformation(SystemFirmwareTableInformation, sfti, expected_len, &expected_len); expected_len -= min_sfti_len; + len = pGetSystemFirmwareTable(RSMB, 0, NULL, 0); +todo_wine + ok(len == expected_len, "Expected length %u, got %u\n", expected_len, len); + smbios_table = HeapAlloc(GetProcessHeap(), 0, expected_len); len = pGetSystemFirmwareTable(RSMB, 0, smbios_table, expected_len); ok(len == expected_len, "Expected length %u, got %u\n", expected_len, len);
1
0
0
0
Hans Leidekker : winhttp: Build with msvcrt.
by Alexandre Julliard
20 Nov '19
20 Nov '19
Module: wine Branch: master Commit: e3057aea62c911fc7d7ae73d30d3ffa892956fd7 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=e3057aea62c911fc7d7ae73d…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Wed Nov 20 14:29:08 2019 +0100 winhttp: Build with msvcrt. Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winhttp/Makefile.in | 2 + dlls/winhttp/cookie.c | 36 +++---- dlls/winhttp/handle.c | 3 +- dlls/winhttp/main.c | 5 +- dlls/winhttp/net.c | 15 ++- dlls/winhttp/request.c | 218 ++++++++++++++++++++--------------------- dlls/winhttp/session.c | 90 +++++++++-------- dlls/winhttp/url.c | 48 +++++---- dlls/winhttp/winhttp_private.h | 9 +- 9 files changed, 208 insertions(+), 218 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=e3057aea62c911fc7d7a…
1
0
0
0
Hans Leidekker : winhttp: Pass correct buffer size to WideCharToMultiByte.
by Alexandre Julliard
20 Nov '19
20 Nov '19
Module: wine Branch: master Commit: 5a212dff7dee325f10ec4e581f9b99935b955ec6 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=5a212dff7dee325f10ec4e58…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Wed Nov 20 14:29:07 2019 +0100 winhttp: Pass correct buffer size to WideCharToMultiByte. Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winhttp/winhttp_private.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/winhttp/winhttp_private.h b/dlls/winhttp/winhttp_private.h index 93cf0f7125..734a1ad52a 100644 --- a/dlls/winhttp/winhttp_private.h +++ b/dlls/winhttp/winhttp_private.h @@ -314,7 +314,7 @@ static inline WCHAR *strdupAW( const char *src ) WCHAR *dst = NULL; if (src) { - DWORD len = MultiByteToWideChar( CP_ACP, 0, src, -1, NULL, 0 ); + int len = MultiByteToWideChar( CP_ACP, 0, src, -1, NULL, 0 ); if ((dst = heap_alloc( len * sizeof(WCHAR) ))) MultiByteToWideChar( CP_ACP, 0, src, -1, dst, len ); } @@ -341,7 +341,7 @@ static inline char *strdupWA_sized( const WCHAR *src, DWORD size ) int len = WideCharToMultiByte( CP_ACP, 0, src, size, NULL, 0, NULL, NULL ) + 1; if ((dst = heap_alloc( len ))) { - WideCharToMultiByte( CP_ACP, 0, src, len, dst, size, NULL, NULL ); + WideCharToMultiByte( CP_ACP, 0, src, size, dst, len, NULL, NULL ); dst[len - 1] = 0; } }
1
0
0
0
Hans Leidekker : winhttp: Add support for detecting the proxy config URL via DHCP.
by Alexandre Julliard
20 Nov '19
20 Nov '19
Module: wine Branch: master Commit: 4ad4173e3a715d5bd27bedc164718cef9cafe0a4 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=4ad4173e3a715d5bd27bedc1…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Wed Nov 20 14:29:06 2019 +0100 winhttp: Add support for detecting the proxy config URL via DHCP. Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winhttp/Makefile.in | 3 +- dlls/winhttp/session.c | 214 ++++++++++++++++++++++++++--------------------- 2 files changed, 121 insertions(+), 96 deletions(-) diff --git a/dlls/winhttp/Makefile.in b/dlls/winhttp/Makefile.in index 659b5821df..f4fc317c5f 100644 --- a/dlls/winhttp/Makefile.in +++ b/dlls/winhttp/Makefile.in @@ -1,8 +1,7 @@ MODULE = winhttp.dll IMPORTLIB = winhttp IMPORTS = uuid jsproxy user32 advapi32 ws2_32 -DELAYIMPORTS = oleaut32 ole32 crypt32 secur32 -EXTRALIBS = $(CORESERVICES_LIBS) +DELAYIMPORTS = oleaut32 ole32 crypt32 secur32 iphlpapi dhcpcsvc C_SRCS = \ cookie.c \ diff --git a/dlls/winhttp/session.c b/dlls/winhttp/session.c index ef4bb17469..042b4f7203 100644 --- a/dlls/winhttp/session.c +++ b/dlls/winhttp/session.c @@ -20,14 +20,6 @@ #include <stdarg.h> #include <stdlib.h> -#ifdef HAVE_CORESERVICES_CORESERVICES_H -#define GetCurrentThread MacGetCurrentThread -#define LoadResource MacLoadResource -#include <CoreServices/CoreServices.h> -#undef GetCurrentThread -#undef LoadResource -#endif - #include "windef.h" #include "winbase.h" #include "winsock2.h" @@ -36,6 +28,8 @@ #include "winhttp.h" #include "winreg.h" #include "winternl.h" +#include "iphlpapi.h" +#include "dhcpcsdk.h" #define COBJMACROS #include "ole2.h" #include "dispex.h" @@ -1310,6 +1304,80 @@ BOOL WINAPI WinHttpSetOption( HINTERNET handle, DWORD option, LPVOID buffer, DWO return ret; } +static IP_ADAPTER_ADDRESSES *get_adapters(void) +{ + ULONG err, size = 1024, flags = GAA_FLAG_SKIP_ANYCAST | GAA_FLAG_SKIP_MULTICAST | + GAA_FLAG_SKIP_DNS_SERVER | GAA_FLAG_SKIP_FRIENDLY_NAME; + IP_ADAPTER_ADDRESSES *tmp, *ret; + + if (!(ret = heap_alloc( size ))) return NULL; + err = GetAdaptersAddresses( AF_UNSPEC, flags, NULL, ret, &size ); + while (err == ERROR_BUFFER_OVERFLOW) + { + if (!(tmp = heap_realloc( ret, size ))) break; + ret = tmp; + err = GetAdaptersAddresses( AF_UNSPEC, flags, NULL, ret, &size ); + } + if (err == ERROR_SUCCESS) return ret; + heap_free( ret ); + return NULL; +} + +static WCHAR *detect_autoproxyconfig_url_dhcp(void) +{ + IP_ADAPTER_ADDRESSES *adapters, *ptr; + DHCPCAPI_PARAMS_ARRAY send_params, recv_params; + DHCPCAPI_PARAMS param; + WCHAR name[MAX_ADAPTER_NAME_LENGTH + 1], *ret = NULL; + DWORD err, size; + BYTE *tmp, *buf = NULL; + + if (!(adapters = get_adapters())) return NULL; + + memset( &send_params, 0, sizeof(send_params) ); + memset( ¶m, 0, sizeof(param) ); + param.OptionId = OPTION_MSFT_IE_PROXY; + recv_params.nParams = 1; + recv_params.Params = ¶m; + + for (ptr = adapters; ptr; ptr = ptr->Next) + { + MultiByteToWideChar( CP_ACP, 0, ptr->AdapterName, -1, name, ARRAY_SIZE(name) ); + TRACE( "adapter '%s' type %u dhcpv4 enabled %d\n", wine_dbgstr_w(name), ptr->IfType, ptr->Dhcpv4Enabled ); + + if (ptr->IfType == IF_TYPE_SOFTWARE_LOOPBACK) continue; + /* FIXME: also skip adapters where DHCP is disabled */ + + size = 256; + if (!(buf = heap_alloc( size ))) goto done; + err = DhcpRequestParams( DHCPCAPI_REQUEST_SYNCHRONOUS, NULL, name, NULL, send_params, recv_params, + buf, &size, NULL ); + while (err == ERROR_MORE_DATA) + { + if (!(tmp = heap_realloc( buf, size ))) goto done; + buf = tmp; + err = DhcpRequestParams( DHCPCAPI_REQUEST_SYNCHRONOUS, NULL, name, NULL, send_params, recv_params, + buf, &size, NULL ); + } + if (err == ERROR_SUCCESS && param.nBytesData) + { + int len = MultiByteToWideChar( CP_ACP, 0, (const char *)param.Data, param.nBytesData, NULL, 0 ); + if ((ret = heap_alloc( (len + 1) * sizeof(WCHAR) ))) + { + MultiByteToWideChar( CP_ACP, 0, (const char *)param.Data, param.nBytesData, ret, len ); + ret[len] = 0; + } + TRACE("returning %s\n", debugstr_w(ret)); + break; + } + } + +done: + heap_free( buf ); + heap_free( adapters ); + return ret; +} + static char *get_computer_name( COMPUTER_NAME_FORMAT format ) { char *ret; @@ -1362,50 +1430,57 @@ static WCHAR *build_wpad_url( const char *hostname, const struct addrinfo *ai ) return ret; } -static BOOL get_system_proxy_autoconfig_url( char *buf, DWORD buflen ) +static WCHAR *detect_autoproxyconfig_url_dns(void) { -#if defined(MAC_OS_X_VERSION_10_6) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 - CFDictionaryRef settings = CFNetworkCopySystemProxySettings(); - const void *ref; - BOOL ret = FALSE; - - if (!settings) return FALSE; + char *fqdn, *domain, *p; + WCHAR *ret; - if (!(ref = CFDictionaryGetValue( settings, kCFNetworkProxiesProxyAutoConfigURLString ))) + if (!(fqdn = get_computer_name( ComputerNamePhysicalDnsFullyQualified ))) return NULL; + if (!(domain = get_computer_name( ComputerNamePhysicalDnsDomain ))) { - CFRelease( settings ); - return FALSE; + heap_free( fqdn ); + return NULL; } - if (CFStringGetCString( ref, buf, buflen, kCFStringEncodingASCII )) + p = fqdn; + while ((p = strchr( p, '.' )) && is_domain_suffix( p + 1, domain )) { - TRACE( "returning %s\n", debugstr_a(buf) ); - ret = TRUE; + char *name; + struct addrinfo *ai; + int res; + + if (!(name = heap_alloc( sizeof("wpad") + strlen(p) ))) + { + heap_free( fqdn ); + heap_free( domain ); + return NULL; + } + strcpy( name, "wpad" ); + strcat( name, p ); + res = getaddrinfo( name, NULL, NULL, &ai ); + if (!res) + { + ret = build_wpad_url( name, ai ); + freeaddrinfo( ai ); + if (ret) + { + TRACE("returning %s\n", debugstr_w(ret)); + heap_free( name ); + break; + } + } + heap_free( name ); + p++; } - CFRelease( settings ); + heap_free( domain ); + heap_free( fqdn ); return ret; -#else - static BOOL first = TRUE; - if (first) - { - FIXME( "no support on this platform\n" ); - first = FALSE; - } - else - TRACE( "no support on this platform\n" ); - return FALSE; -#endif } -#define INTERNET_MAX_URL_LENGTH 2084 - /*********************************************************************** * WinHttpDetectAutoProxyConfigUrl (winhttp.@) */ BOOL WINAPI WinHttpDetectAutoProxyConfigUrl( DWORD flags, LPWSTR *url ) { - BOOL ret = FALSE; - char system_url[INTERNET_MAX_URL_LENGTH + 1]; - TRACE("0x%08x, %p\n", flags, url); if (!flags || !url) @@ -1413,71 +1488,22 @@ BOOL WINAPI WinHttpDetectAutoProxyConfigUrl( DWORD flags, LPWSTR *url ) SetLastError( ERROR_INVALID_PARAMETER ); return FALSE; } - if (get_system_proxy_autoconfig_url( system_url, sizeof(system_url) )) - { - WCHAR *urlW; - - if (!(urlW = strdupAW( system_url ))) return FALSE; - *url = urlW; - SetLastError( ERROR_SUCCESS ); - return TRUE; - } + *url = NULL; if (flags & WINHTTP_AUTO_DETECT_TYPE_DHCP) { - static int fixme_shown; - if (!fixme_shown++) FIXME("discovery via DHCP not supported\n"); + *url = detect_autoproxyconfig_url_dhcp(); } if (flags & WINHTTP_AUTO_DETECT_TYPE_DNS_A) { - char *fqdn, *domain, *p; - - if (!(fqdn = get_computer_name( ComputerNamePhysicalDnsFullyQualified ))) return FALSE; - if (!(domain = get_computer_name( ComputerNamePhysicalDnsDomain ))) - { - heap_free( fqdn ); - return FALSE; - } - p = fqdn; - while ((p = strchr( p, '.' )) && is_domain_suffix( p + 1, domain )) - { - struct addrinfo *ai; - char *name; - int res; - - if (!(name = heap_alloc( sizeof("wpad") + strlen(p) ))) - { - heap_free( fqdn ); - heap_free( domain ); - return FALSE; - } - strcpy( name, "wpad" ); - strcat( name, p ); - res = getaddrinfo( name, NULL, NULL, &ai ); - if (!res) - { - *url = build_wpad_url( name, ai ); - freeaddrinfo( ai ); - if (*url) - { - TRACE("returning %s\n", debugstr_w(*url)); - heap_free( name ); - ret = TRUE; - break; - } - } - heap_free( name ); - p++; - } - heap_free( domain ); - heap_free( fqdn ); + if (!*url) *url = detect_autoproxyconfig_url_dns(); } - if (!ret) + if (!*url) { SetLastError( ERROR_WINHTTP_AUTODETECTION_FAILED ); - *url = NULL; + return FALSE; } - else SetLastError( ERROR_SUCCESS ); - return ret; + SetLastError( ERROR_SUCCESS ); + return TRUE; } static const WCHAR Connections[] = {
1
0
0
0
Hans Leidekker : mountmgr.sys: Fix the build on macOS when dbus libraries are present.
by Alexandre Julliard
20 Nov '19
20 Nov '19
Module: wine Branch: master Commit: 4692ae3f0f78443c5a10179d7dc7b5f119d67112 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=4692ae3f0f78443c5a10179d…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Wed Nov 20 14:29:05 2019 +0100 mountmgr.sys: Fix the build on macOS when dbus libraries are present. Reported by Gijs Vermeulen. Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mountmgr.sys/dbus.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dlls/mountmgr.sys/dbus.c b/dlls/mountmgr.sys/dbus.c index f85c2e3707..4ccfb2a79c 100644 --- a/dlls/mountmgr.sys/dbus.c +++ b/dlls/mountmgr.sys/dbus.c @@ -25,7 +25,6 @@ #include <errno.h> #include <stdarg.h> #include <stdio.h> -#include <sys/time.h> #ifdef SONAME_LIBDBUS_1 # include <dbus/dbus.h> #endif @@ -771,6 +770,8 @@ void initialize_dbus(void) CloseHandle( handle ); } +#if !defined(HAVE_SYSTEMCONFIGURATION_SCDYNAMICSTORECOPYDHCPINFO_H) || !defined(HAVE_SYSTEMCONFIGURATION_SCNETWORKCONFIGURATION_H) + /* The udisks dispatch loop will block all threads using the same connection, so we'll use a private connection. Multiple threads can make methods calls at the same time on the same connection, according to the documentation. @@ -1033,6 +1034,7 @@ ULONG get_dhcp_request_param( const WCHAR *adapter, struct mountmgr_dhcp_request p_dbus_message_unref( reply ); return ret; } +#endif #else /* SONAME_LIBDBUS_1 */
1
0
0
0
Paul Gofman : d3dx9: Implement d3dx_effect_ApplyParameterBlock().
by Alexandre Julliard
20 Nov '19
20 Nov '19
Module: wine Branch: master Commit: e28888c9fe504f75d985e34a2c271f43abd95497 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=e28888c9fe504f75d985e34a…
Author: Paul Gofman <gofmanp(a)gmail.com> Date: Wed Nov 20 17:50:12 2019 +0100 d3dx9: Implement d3dx_effect_ApplyParameterBlock(). Signed-off-by: Paul Gofman <gofmanp(a)gmail.com> Signed-off-by: Matteo Bruni <mbruni(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/d3dx9_36/effect.c | 22 +++++++++++++++++----- dlls/d3dx9_36/tests/effect.c | 40 ++++++++++++++++++++-------------------- 2 files changed, 37 insertions(+), 25 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=e28888c9fe504f75d985…
1
0
0
0
← Newer
1
...
37
38
39
40
41
42
43
...
90
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
84
85
86
87
88
89
90
Results per page:
10
25
50
100
200