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 2020
----- 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
851 discussions
Start a n
N
ew thread
Jan Sikorski : wininet: Prevent use after free in logging.
by Alexandre Julliard
02 Nov '20
02 Nov '20
Module: wine Branch: master Commit: bcdb58cc7959afd5fa35ab039e6564934888b4c0 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=bcdb58cc7959afd5fa35ab03…
Author: Jan Sikorski <jsikorski(a)codeweavers.com> Date: Fri Oct 30 12:13:23 2020 +0100 wininet: Prevent use after free in logging. Make logs which show values that are unmapped by cache_container_unlock_index() go before it's called. Signed-off-by: Jan Sikorski <jsikorski(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wininet/urlcache.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dlls/wininet/urlcache.c b/dlls/wininet/urlcache.c index 3275cb19e6a..4a397b6b4de 100644 --- a/dlls/wininet/urlcache.c +++ b/dlls/wininet/urlcache.c @@ -1808,9 +1808,9 @@ static BOOL urlcache_get_entry_info(const char *url, void *entry_info, url_entry = (const entry_url*)((LPBYTE)header + hash_entry->offset); if(url_entry->header.signature != URL_SIGNATURE) { - cache_container_unlock_index(container, header); FIXME("Trying to retrieve entry of unknown format %s\n", debugstr_an((LPCSTR)&url_entry->header.signature, sizeof(DWORD))); + cache_container_unlock_index(container, header); SetLastError(ERROR_FILE_NOT_FOUND); return FALSE; } @@ -2041,8 +2041,8 @@ BOOL WINAPI SetUrlCacheEntryInfoA(LPCSTR lpszUrlName, pEntry = (entry_header*)((LPBYTE)pHeader + pHashEntry->offset); if (pEntry->signature != URL_SIGNATURE) { - cache_container_unlock_index(pContainer, pHeader); FIXME("Trying to retrieve entry of unknown format %s\n", debugstr_an((LPSTR)&pEntry->signature, sizeof(DWORD))); + cache_container_unlock_index(pContainer, pHeader); SetLastError(ERROR_FILE_NOT_FOUND); return FALSE; } @@ -2111,9 +2111,9 @@ static BOOL urlcache_entry_get_file(const char *url, void *entry_info, DWORD *si url_entry = (entry_url*)((LPBYTE)header + hash_entry->offset); if(url_entry->header.signature != URL_SIGNATURE) { - cache_container_unlock_index(container, header); FIXME("Trying to retrieve entry of unknown format %s\n", debugstr_an((LPSTR)&url_entry->header.signature, sizeof(DWORD))); + cache_container_unlock_index(container, header); SetLastError(ERROR_FILE_NOT_FOUND); return FALSE; } @@ -4004,9 +4004,9 @@ BOOL WINAPI IsUrlCacheEntryExpiredA(LPCSTR url, DWORD dwFlags, FILETIME* pftLast pEntry = (const entry_header*)((LPBYTE)pHeader + pHashEntry->offset); if (pEntry->signature != URL_SIGNATURE) { + FIXME("Trying to retrieve entry of unknown format %s\n", debugstr_an((LPCSTR)&pEntry->signature, sizeof(DWORD))); cache_container_unlock_index(pContainer, pHeader); memset(pftLastModified, 0, sizeof(*pftLastModified)); - FIXME("Trying to retrieve entry of unknown format %s\n", debugstr_an((LPCSTR)&pEntry->signature, sizeof(DWORD))); return TRUE; }
1
0
0
0
Brendan Shanks : ntdll: Rename PEB->Reserved[1] to AtlThunkSListPtr32.
by Alexandre Julliard
02 Nov '20
02 Nov '20
Module: wine Branch: master Commit: b7f14a97bdb83690fc043ee3288dfde0b860e1a2 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=b7f14a97bdb83690fc043ee3…
Author: Brendan Shanks <bshanks(a)codeweavers.com> Date: Fri Oct 30 08:17:16 2020 -0700 ntdll: Rename PEB->Reserved[1] to AtlThunkSListPtr32. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=50077
Signed-off-by: Brendan Shanks <bshanks(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/winternl.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/winternl.h b/include/winternl.h index 36cc8e8e984..11b64d078f0 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -314,7 +314,8 @@ typedef struct _PEB PVOID /*PPEBLOCKROUTINE*/ FastPebUnlockRoutine; /* 024/048 */ ULONG EnvironmentUpdateCount; /* 028/050 */ PVOID KernelCallbackTable; /* 02c/058 */ - ULONG Reserved[2]; /* 030/060 */ + ULONG Reserved; /* 030/060 */ + ULONG AtlThunkSListPtr32; /* 034/064 */ PVOID /*PPEB_FREE_BLOCK*/ FreeList; /* 038/068 */ ULONG TlsExpansionCounter; /* 03c/070 */ PRTL_BITMAP TlsBitmap; /* 040/078 */ @@ -558,7 +559,8 @@ typedef struct _PEB64 ULONG64 FastPebUnlockRoutine; /* 0048 */ ULONG EnvironmentUpdateCount; /* 0050 */ ULONG64 KernelCallbackTable; /* 0058 */ - ULONG Reserved[2]; /* 0060 */ + ULONG Reserved; /* 0060 */ + ULONG AtlThunkSListPtr32; /* 0064 */ ULONG64 FreeList; /* 0068 */ ULONG TlsExpansionCounter; /* 0070 */ ULONG64 TlsBitmap; /* 0078 */
1
0
0
0
Brendan Shanks : dbghelp: Use PEB->CloudFileFlags instead of PEB->Reserved for debug base address.
by Alexandre Julliard
02 Nov '20
02 Nov '20
Module: wine Branch: master Commit: f40195cd9206872388d01e72db92ddf6b3140f6d URL:
https://source.winehq.org/git/wine.git/?a=commit;h=f40195cd9206872388d01e72…
Author: Brendan Shanks <bshanks(a)codeweavers.com> Date: Fri Oct 30 08:17:15 2020 -0700 dbghelp: Use PEB->CloudFileFlags instead of PEB->Reserved for debug base address. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=50077
Signed-off-by: Brendan Shanks <bshanks(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dbghelp/dbghelp.c | 4 ++-- dlls/ntdll/unix/virtual.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/dbghelp/dbghelp.c b/dlls/dbghelp/dbghelp.c index 9d33bc67f2b..e38687412eb 100644 --- a/dlls/dbghelp/dbghelp.c +++ b/dlls/dbghelp/dbghelp.c @@ -304,14 +304,14 @@ static BOOL check_live_target(struct process* pcs) PEB32 peb32; C_ASSERT(sizeof(void*) != 4 || FIELD_OFFSET(RTL_USER_PROCESS_PARAMETERS, Environment) == 0x48); if (!ReadProcessMemory(pcs->handle, pbi.PebBaseAddress, &peb32, sizeof(peb32), NULL)) return FALSE; - base = peb32.Reserved[0]; + if (!ReadProcessMemory(pcs->handle, (char *)pbi.PebBaseAddress + 0x460 /* CloudFileFlags */, &base, sizeof(base), NULL)) return FALSE; if (read_process_memory(pcs, peb32.ProcessParameters + 0x48, &env32, sizeof(env32))) env = env32; } else { PEB peb; if (!ReadProcessMemory(pcs->handle, pbi.PebBaseAddress, &peb, sizeof(peb), NULL)) return FALSE; - base = peb.Reserved[0]; + if (!ReadProcessMemory(pcs->handle, &peb.CloudFileFlags, &base, sizeof(base), NULL)) return FALSE; ReadProcessMemory(pcs->handle, &peb.ProcessParameters->Environment, &env, sizeof(env), NULL); } diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c index 614159b7d90..853eb0469b9 100644 --- a/dlls/ntdll/unix/virtual.c +++ b/dlls/ntdll/unix/virtual.c @@ -2591,7 +2591,7 @@ TEB *virtual_alloc_first_teb(void) NtAllocateVirtualMemory( NtCurrentProcess(), (void **)&ptr, 0, &block_size, MEM_COMMIT, PAGE_READWRITE ); NtAllocateVirtualMemory( NtCurrentProcess(), (void **)&peb, 0, &peb_size, MEM_COMMIT, PAGE_READWRITE ); init_teb( teb, peb ); - *(ULONG_PTR *)peb->Reserved = get_image_address(); + *(ULONG_PTR *)&peb->CloudFileFlags = get_image_address(); return teb; }
1
0
0
0
Brendan Shanks : ntdll: Update the PEB structures for newer Windows versions.
by Alexandre Julliard
02 Nov '20
02 Nov '20
Module: wine Branch: master Commit: d18724c8169d50818c2c27ff3fb0b0567a5a3932 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=d18724c8169d50818c2c27ff…
Author: Brendan Shanks <bshanks(a)codeweavers.com> Date: Fri Oct 30 08:17:14 2020 -0700 ntdll: Update the PEB structures for newer Windows versions. Signed-off-by: Brendan Shanks <bshanks(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/winternl.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/winternl.h b/include/winternl.h index bd6a2c35932..36cc8e8e984 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -379,6 +379,12 @@ typedef struct _PEB PVOID WaitOnAddressHashTable [0x80]; /* 25c/3a0 */ PVOID TelemetryCoverageHeader; /* 45c/7a0 */ ULONG CloudFileFlags; /* 460/7a8 */ + ULONG CloudFileDiagFlags; /* 464/7ac */ + CHAR PlaceholderCompatibilityMode; /* 468/7b0 */ + CHAR PlaceholderCompatibilityModeReserved[7]; /* 469/7b1 */ + PVOID LeapSecondData; /* 470/7b8 */ + ULONG LeapSecondFlags; /* 474/7c0 */ + ULONG NtGlobalFlag2; /* 478/7c4 */ } PEB, *PPEB; @@ -617,6 +623,12 @@ typedef struct _PEB64 ULONG64 WaitOnAddressHashTable [0x80]; /* 03a0 */ ULONG64 TelemetryCoverageHeader; /* 07a0 */ ULONG CloudFileFlags; /* 07a8 */ + ULONG CloudFileDiagFlags; /* 07ac */ + CHAR PlaceholderCompatibilityMode; /* 07b0 */ + CHAR PlaceholderCompatibilityModeReserved[7]; /* 07b1 */ + ULONG64 LeapSecondData; /* 07b8 */ + ULONG LeapSecondFlags; /* 07c0 */ + ULONG NtGlobalFlag2; /* 07c4 */ } PEB64; typedef struct _TEB64
1
0
0
0
Nikolay Sivov : mfmediaengine: Keep "preload" property.
by Alexandre Julliard
02 Nov '20
02 Nov '20
Module: wine Branch: master Commit: 113a4c4fa0ab266094ba44f53f79702a3cae3e00 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=113a4c4fa0ab266094ba44f5…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Mon Nov 2 15:54:18 2020 +0300 mfmediaengine: Keep "preload" property. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mfmediaengine/main.c | 22 ++++++++++++++++++---- dlls/mfmediaengine/tests/mfmediaengine.c | 9 ++++++--- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/dlls/mfmediaengine/main.c b/dlls/mfmediaengine/main.c index d93e2b2f38c..64f0ae6d2a1 100644 --- a/dlls/mfmediaengine/main.c +++ b/dlls/mfmediaengine/main.c @@ -87,6 +87,7 @@ struct media_engine MF_MEDIA_ENGINE_ERR error_code; HRESULT extended_code; MF_MEDIA_ENGINE_READY ready_state; + MF_MEDIA_ENGINE_PRELOAD preload; IMFMediaSession *session; IMFSourceResolver *resolver; BSTR current_source; @@ -717,16 +718,29 @@ static USHORT WINAPI media_engine_GetNetworkState(IMFMediaEngine *iface) static MF_MEDIA_ENGINE_PRELOAD WINAPI media_engine_GetPreload(IMFMediaEngine *iface) { - FIXME("(%p): stub.\n", iface); + struct media_engine *engine = impl_from_IMFMediaEngine(iface); + MF_MEDIA_ENGINE_PRELOAD preload; + + TRACE("%p.\n", iface); + + EnterCriticalSection(&engine->cs); + preload = engine->preload; + LeaveCriticalSection(&engine->cs); - return MF_MEDIA_ENGINE_PRELOAD_NONE; + return preload; } static HRESULT WINAPI media_engine_SetPreload(IMFMediaEngine *iface, MF_MEDIA_ENGINE_PRELOAD preload) { - FIXME("(%p, %d): stub.\n", iface, preload); + struct media_engine *engine = impl_from_IMFMediaEngine(iface); - return E_NOTIMPL; + TRACE("%p, %d.\n", iface, preload); + + EnterCriticalSection(&engine->cs); + engine->preload = preload; + LeaveCriticalSection(&engine->cs); + + return S_OK; } static HRESULT WINAPI media_engine_GetBuffered(IMFMediaEngine *iface, IMFMediaTimeRange **buffered) diff --git a/dlls/mfmediaengine/tests/mfmediaengine.c b/dlls/mfmediaengine/tests/mfmediaengine.c index 660e5b95331..0394bcf6a0e 100644 --- a/dlls/mfmediaengine/tests/mfmediaengine.c +++ b/dlls/mfmediaengine/tests/mfmediaengine.c @@ -265,17 +265,20 @@ todo_wine /* Preload mode is still accessible. */ state = IMFMediaEngine_GetPreload(media_engine); -todo_wine ok(!state, "Unexpected state %d.\n", state); hr = IMFMediaEngine_SetPreload(media_engine, MF_MEDIA_ENGINE_PRELOAD_AUTOMATIC); -todo_wine ok(hr == S_OK, "Unexpected hr %#x.\n", hr); state = IMFMediaEngine_GetPreload(media_engine); -todo_wine ok(state == MF_MEDIA_ENGINE_PRELOAD_AUTOMATIC, "Unexpected state %d.\n", state); + hr = IMFMediaEngine_SetPreload(media_engine, 100); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + + state = IMFMediaEngine_GetPreload(media_engine); + ok(state == 100, "Unexpected state %d.\n", state); + hr = IMFMediaEngine_GetBuffered(media_engine, &time_range); todo_wine ok(hr == MF_E_SHUTDOWN, "Unexpected hr %#x.\n", hr);
1
0
0
0
Nikolay Sivov : mfplat: Implement MFFrameRateToAverageTimePerFrame().
by Alexandre Julliard
02 Nov '20
02 Nov '20
Module: wine Branch: master Commit: abb8852077c6f74ae73ab430f3b2b5e7f42ef0df URL:
https://source.winehq.org/git/wine.git/?a=commit;h=abb8852077c6f74ae73ab430…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Mon Nov 2 15:27:50 2020 +0300 mfplat: Implement MFFrameRateToAverageTimePerFrame(). Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mfplat/mediatype.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++ dlls/mfplat/mfplat.spec | 2 +- dlls/mfplat/tests/mfplat.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++ include/mfapi.h | 1 + 4 files changed, 96 insertions(+), 1 deletion(-) diff --git a/dlls/mfplat/mediatype.c b/dlls/mfplat/mediatype.c index 0217237d85a..fcaef110038 100644 --- a/dlls/mfplat/mediatype.c +++ b/dlls/mfplat/mediatype.c @@ -3164,3 +3164,50 @@ HRESULT WINAPI MFConvertColorInfoToDXVA(DWORD *dxva_info, const MFVIDEOFORMAT *f return S_OK; } + +struct frame_rate +{ + UINT64 rate; + UINT64 frame_time; +}; + +static int __cdecl frame_rate_compare(const void *a, const void *b) +{ + const UINT64 *rate = a; + const struct frame_rate *known_rate = b; + return *rate == known_rate->rate ? 0 : ( *rate < known_rate->rate ? 1 : -1 ); +} + +/*********************************************************************** + * MFFrameRateToAverageTimePerFrame (mfplat.@) + */ +HRESULT WINAPI MFFrameRateToAverageTimePerFrame(UINT32 numerator, UINT32 denominator, UINT64 *avgframetime) +{ + static const struct frame_rate known_rates[] = + { +#define KNOWN_RATE(n,d,ft) { ((UINT64)n << 32) | d, ft } + KNOWN_RATE(60000, 1001, 166833), + KNOWN_RATE(30000, 1001, 333667), + KNOWN_RATE(24000, 1001, 417188), + KNOWN_RATE(60, 1, 166667), + KNOWN_RATE(50, 1, 200000), + KNOWN_RATE(30, 1, 333333), + KNOWN_RATE(25, 1, 400000), + KNOWN_RATE(24, 1, 416667), +#undef KNOWN_RATE + }; + UINT64 rate = ((UINT64)numerator << 32) | denominator; + const struct frame_rate *entry; + + TRACE("%u, %u, %p.\n", numerator, denominator, avgframetime); + + if ((entry = bsearch(&rate, known_rates, ARRAY_SIZE(known_rates), sizeof(*known_rates), + frame_rate_compare))) + { + *avgframetime = entry->frame_time; + } + else + *avgframetime = numerator ? denominator * (UINT64)10000000 / numerator : 0; + + return S_OK; +} diff --git a/dlls/mfplat/mfplat.spec b/dlls/mfplat/mfplat.spec index 80064e1980e..36e009c2db9 100644 --- a/dlls/mfplat/mfplat.spec +++ b/dlls/mfplat/mfplat.spec @@ -90,7 +90,7 @@ @ stub MFEndGetHostByName @ stdcall MFEndRegisterWorkQueueWithMMCSS(ptr ptr) rtworkq.RtwqEndRegisterWorkQueueWithMMCSS @ stdcall MFEndUnregisterWorkQueueWithMMCSS(ptr) rtworkq.RtwqEndUnregisterWorkQueueWithMMCSS -@ stub MFFrameRateToAverageTimePerFrame +@ stdcall MFFrameRateToAverageTimePerFrame(long long ptr) @ stub MFFreeAdaptersAddresses @ stub MFGetAdaptersAddresses @ stdcall MFGetAttributesAsBlob(ptr ptr long) diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c index a0789ee6b2c..a6c8a10f777 100644 --- a/dlls/mfplat/tests/mfplat.c +++ b/dlls/mfplat/tests/mfplat.c @@ -5865,6 +5865,52 @@ static void test_MFCreateTrackedSample(void) IMFTrackedSample_Release(tracked_sample); } +static void test_MFFrameRateToAverageTimePerFrame(void) +{ + static const struct frame_rate_test + { + unsigned int numerator; + unsigned int denominator; + UINT64 avgtime; + } frame_rate_tests[] = + { + { 60000, 1001, 166833 }, + { 30000, 1001, 333667 }, + { 24000, 1001, 417188 }, + { 60, 1, 166667 }, + { 30, 1, 333333 }, + { 50, 1, 200000 }, + { 25, 1, 400000 }, + { 24, 1, 416667 }, + + { 39, 1, 256410 }, + { 120, 1, 83333 }, + }; + unsigned int i; + UINT64 avgtime; + HRESULT hr; + + avgtime = 1; + hr = MFFrameRateToAverageTimePerFrame(0, 0, &avgtime); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + ok(!avgtime, "Unexpected frame time.\n"); + + avgtime = 1; + hr = MFFrameRateToAverageTimePerFrame(0, 1001, &avgtime); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + ok(!avgtime, "Unexpected frame time.\n"); + + for (i = 0; i < ARRAY_SIZE(frame_rate_tests); ++i) + { + avgtime = 0; + hr = MFFrameRateToAverageTimePerFrame(frame_rate_tests[i].numerator, + frame_rate_tests[i].denominator, &avgtime); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + ok(avgtime == frame_rate_tests[i].avgtime, "%u: unexpected frame time %s, expected %s.\n", + i, wine_dbgstr_longlong(avgtime), wine_dbgstr_longlong(frame_rate_tests[i].avgtime)); + } +} + START_TEST(mfplat) { char **argv; @@ -5923,6 +5969,7 @@ START_TEST(mfplat) test_MFCreateMFVideoFormatFromMFMediaType(); test_MFCreateDXSurfaceBuffer(); test_MFCreateTrackedSample(); + test_MFFrameRateToAverageTimePerFrame(); CoUninitialize(); } diff --git a/include/mfapi.h b/include/mfapi.h index 25fced1c7d6..8661b41fc4e 100644 --- a/include/mfapi.h +++ b/include/mfapi.h @@ -526,6 +526,7 @@ HRESULT WINAPI MFCreateWaveFormatExFromMFMediaType(IMFMediaType *type, WAVEFORMA HRESULT WINAPI MFEndCreateFile(IMFAsyncResult *result, IMFByteStream **stream); HRESULT WINAPI MFEndRegisterWorkQueueWithMMCSS(IMFAsyncResult *result, DWORD *taskid); HRESULT WINAPI MFEndUnregisterWorkQueueWithMMCSS(IMFAsyncResult *result); +HRESULT WINAPI MFFrameRateToAverageTimePerFrame(UINT32 numerator, UINT32 denominator, UINT64 *avgtime); void * WINAPI MFHeapAlloc(SIZE_T size, ULONG flags, char *file, int line, EAllocationType type); void WINAPI MFHeapFree(void *ptr); HRESULT WINAPI MFGetAttributesAsBlob(IMFAttributes *attributes, UINT8 *buffer, UINT size);
1
0
0
0
Nikolay Sivov : mfreadwrite/tests: And some more tests for ReadSample() and failing requests.
by Alexandre Julliard
02 Nov '20
02 Nov '20
Module: wine Branch: master Commit: 28dcc19dfd51a287666093e6523cd0e0992c4b71 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=28dcc19dfd51a287666093e6…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Mon Nov 2 15:27:49 2020 +0300 mfreadwrite/tests: And some more tests for ReadSample() and failing requests. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mfreadwrite/tests/mfplat.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/dlls/mfreadwrite/tests/mfplat.c b/dlls/mfreadwrite/tests/mfplat.c index ef25bbcb3eb..2a6e3a1cc36 100644 --- a/dlls/mfreadwrite/tests/mfplat.c +++ b/dlls/mfreadwrite/tests/mfplat.c @@ -1013,6 +1013,29 @@ static void test_source_reader_from_media_source(void) hr = IMFSourceReader_ReadSample(reader, 0, 0, &actual_index, &stream_flags, ×tamp, &sample); ok(hr == E_NOTIMPL, "Unexpected ReadSample result, hr %#x.\n", hr); + actual_index = ~0u; + stream_flags = 0; + hr = IMFSourceReader_ReadSample(reader, MF_SOURCE_READER_FIRST_AUDIO_STREAM, 0, &actual_index, &stream_flags, + ×tamp, &sample); + ok(hr == E_NOTIMPL, "Unexpected ReadSample result, hr %#x.\n", hr); + ok(actual_index == 0, "Unexpected index %u.\n", actual_index); + ok(stream_flags == MF_SOURCE_READERF_ERROR, "Unexpected flags %#x.\n", stream_flags); + + actual_index = ~0u; + stream_flags = 0; + hr = IMFSourceReader_ReadSample(reader, MF_SOURCE_READER_FIRST_AUDIO_STREAM, 0, &actual_index, &stream_flags, + ×tamp, &sample); + ok(hr == E_NOTIMPL, "Unexpected ReadSample result, hr %#x.\n", hr); + ok(actual_index == 0, "Unexpected index %u.\n", actual_index); + ok(stream_flags == MF_SOURCE_READERF_ERROR, "Unexpected flags %#x.\n", stream_flags); + + actual_index = ~0u; + stream_flags = 0; + hr = IMFSourceReader_ReadSample(reader, 0, 0, &actual_index, &stream_flags, ×tamp, &sample); + ok(hr == E_NOTIMPL, "Unexpected ReadSample result, hr %#x.\n", hr); + ok(actual_index == 0, "Unexpected index %u.\n", actual_index); + ok(stream_flags == MF_SOURCE_READERF_ERROR, "Unexpected flags %#x.\n", stream_flags); + IMFSourceReader_Release(reader); IMFMediaSource_Release(source);
1
0
0
0
Nikolay Sivov : mfplat: Consider first type entry when returning major type for stream descriptors.
by Alexandre Julliard
02 Nov '20
02 Nov '20
Module: wine Branch: master Commit: 74b10b2a4c81f5b0f43f4004783fa6055f719b67 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=74b10b2a4c81f5b0f43f4004…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Mon Nov 2 15:27:48 2020 +0300 mfplat: Consider first type entry when returning major type for stream descriptors. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mfplat/mediatype.c | 6 ++---- dlls/mfplat/tests/mfplat.c | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/dlls/mfplat/mediatype.c b/dlls/mfplat/mediatype.c index ccae999b7d7..0217237d85a 100644 --- a/dlls/mfplat/mediatype.c +++ b/dlls/mfplat/mediatype.c @@ -2003,10 +2003,8 @@ static HRESULT WINAPI mediatype_handler_GetMajorType(IMFMediaTypeHandler *iface, TRACE("%p, %p.\n", iface, type); EnterCriticalSection(&stream_desc->attributes.cs); - if (stream_desc->current_type) - hr = IMFMediaType_GetGUID(stream_desc->current_type, &MF_MT_MAJOR_TYPE, type); - else - hr = MF_E_ATTRIBUTENOTFOUND; + hr = IMFMediaType_GetGUID(stream_desc->current_type ? stream_desc->current_type : + stream_desc->media_types[0], &MF_MT_MAJOR_TYPE, type); LeaveCriticalSection(&stream_desc->attributes.cs); return hr; diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c index fed6b392b21..a0789ee6b2c 100644 --- a/dlls/mfplat/tests/mfplat.c +++ b/dlls/mfplat/tests/mfplat.c @@ -3679,6 +3679,42 @@ static void test_stream_descriptor(void) IMFMediaTypeHandler_Release(type_handler); IMFStreamDescriptor_Release(stream_desc); + + /* Major type is returned for first entry. */ + hr = MFCreateMediaType(&media_types[0]); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + hr = MFCreateMediaType(&media_types[1]); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + + hr = IMFMediaType_SetGUID(media_types[0], &MF_MT_MAJOR_TYPE, &MFMediaType_Audio); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + hr = IMFMediaType_SetGUID(media_types[1], &MF_MT_MAJOR_TYPE, &MFMediaType_Video); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + + hr = MFCreateStreamDescriptor(0, 2, media_types, &stream_desc); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + + hr = IMFStreamDescriptor_GetMediaTypeHandler(stream_desc, &type_handler); + ok(hr == S_OK, "Failed to get type handler, hr %#x.\n", hr); + + hr = IMFMediaTypeHandler_GetMajorType(type_handler, &major_type); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + ok(IsEqualGUID(&major_type, &MFMediaType_Audio), "Unexpected major type %s.\n", wine_dbgstr_guid(&major_type)); + + hr = IMFMediaType_SetGUID(media_types[0], &MF_MT_MAJOR_TYPE, &MFMediaType_Video); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + hr = IMFMediaType_SetGUID(media_types[1], &MF_MT_MAJOR_TYPE, &MFMediaType_Audio); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + + hr = IMFMediaTypeHandler_GetMajorType(type_handler, &major_type); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + ok(IsEqualGUID(&major_type, &MFMediaType_Video), "Unexpected major type %s.\n", wine_dbgstr_guid(&major_type)); + + IMFMediaType_Release(media_types[0]); + IMFMediaType_Release(media_types[1]); + + IMFMediaTypeHandler_Release(type_handler); + IMFStreamDescriptor_Release(stream_desc); } static void test_MFCalculateImageSize(void)
1
0
0
0
Michael Stefaniuc : appwiz.cpl: Use zero terminated wide-char strings.
by Alexandre Julliard
02 Nov '20
02 Nov '20
Module: wine Branch: master Commit: 7d26ac0119ac9ad4c3300ffe6f36da71b3851d0a URL:
https://source.winehq.org/git/wine.git/?a=commit;h=7d26ac0119ac9ad4c3300ffe…
Author: Michael Stefaniuc <mstefani(a)winehq.org> Date: Sun Nov 1 23:31:59 2020 +0100 appwiz.cpl: Use zero terminated wide-char strings. Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/appwiz.cpl/addons.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/dlls/appwiz.cpl/addons.c b/dlls/appwiz.cpl/addons.c index dd53d9e282e..67d61ea0d22 100644 --- a/dlls/appwiz.cpl/addons.c +++ b/dlls/appwiz.cpl/addons.c @@ -598,21 +598,18 @@ static IInternetBindInfo InstallCallbackBindInfo = { &InstallCallbackBindInfoVtb static void append_url_params( WCHAR *url ) { - static const WCHAR arch_formatW[] = {'?','a','r','c','h','='}; - static const WCHAR v_formatW[] = {'&','v','='}; - static const WCHAR winevW[] = {'&','w','i','n','e','v','='}; DWORD size = INTERNET_MAX_URL_LENGTH * sizeof(WCHAR); DWORD len = lstrlenW(url); - memcpy(url+len, arch_formatW, sizeof(arch_formatW)); - len += ARRAY_SIZE(arch_formatW); + lstrcpyW(url+len, L"?arch="); + len += lstrlenW(L"?arch="); len += MultiByteToWideChar(CP_ACP, 0, GECKO_ARCH, sizeof(GECKO_ARCH), url+len, size/sizeof(WCHAR)-len)-1; - memcpy(url+len, v_formatW, sizeof(v_formatW)); - len += ARRAY_SIZE(v_formatW); + lstrcpyW(url+len, L"&v="); + len += lstrlenW(L"&v="); len += MultiByteToWideChar(CP_ACP, 0, addon->version, -1, url+len, size/sizeof(WCHAR)-len)-1; - memcpy(url+len, winevW, sizeof(winevW)); - len += ARRAY_SIZE(winevW); + lstrcpyW(url+len, L"&winev="); + len += lstrlenW(L"&winev="); MultiByteToWideChar(CP_ACP, 0, wine_get_version(), -1, url+len, size/sizeof(WCHAR)-len); }
1
0
0
0
Michael Stefaniuc : appwiz.cpl: Use wide-char string literals.
by Alexandre Julliard
02 Nov '20
02 Nov '20
Module: wine Branch: master Commit: dcf7a1f69eaa4d45f7a2ab10fbd0740f17d745c8 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=dcf7a1f69eaa4d45f7a2ab10…
Author: Michael Stefaniuc <mstefani(a)winehq.org> Date: Sun Nov 1 23:31:58 2020 +0100 appwiz.cpl: Use wide-char string literals. Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/appwiz.cpl/addons.c | 52 +++++++++----------------- dlls/appwiz.cpl/appwiz.c | 96 ++++++++++++++++-------------------------------- 2 files changed, 48 insertions(+), 100 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=dcf7a1f69eaa4d45f7a2…
1
0
0
0
← Newer
1
...
81
82
83
84
85
86
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
Results per page:
10
25
50
100
200