You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Merged with master.
This commit is contained in:
@@ -1,17 +1,18 @@
|
||||
From cc928f1a52250242fd9e3dec8cd159216535f08f Mon Sep 17 00:00:00 2001
|
||||
From 18631ce985f75851cd6f00eb8ff03aa7d3e852ec Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 16 Jan 2014 21:03:47 -0700
|
||||
Subject: kernel32: Advertise junction point support.
|
||||
|
||||
---
|
||||
dlls/kernel32/volume.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
dlls/kernel32/volume.c | 3 ++-
|
||||
dlls/ntdll/tests/file.c | 7 +++----
|
||||
2 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/volume.c b/dlls/kernel32/volume.c
|
||||
index 1509d73..1e3ff7b 100644
|
||||
index d396764..0fb0aef 100644
|
||||
--- a/dlls/kernel32/volume.c
|
||||
+++ b/dlls/kernel32/volume.c
|
||||
@@ -853,7 +853,8 @@ fill_fs_info: /* now fill in the information that depends on the file system ty
|
||||
@@ -854,7 +854,8 @@ fill_fs_info: /* now fill in the information that depends on the file system ty
|
||||
default:
|
||||
if (fsname) lstrcpynW( fsname, ntfsW, fsname_len );
|
||||
if (filename_len) *filename_len = 255;
|
||||
@@ -21,6 +22,24 @@ index 1509d73..1e3ff7b 100644
|
||||
break;
|
||||
}
|
||||
ret = TRUE;
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index acc9197..3112081 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -2799,10 +2799,9 @@ static void test_junction_points(void)
|
||||
memset(&new_attrib, 0x00, sizeof(new_attrib));
|
||||
dwret = NtQueryInformationFile(hJunction, &iosb, &new_attrib, sizeof(new_attrib), FileBasicInformation);
|
||||
ok(dwret == STATUS_SUCCESS, "Failed to get junction point folder's attributes (0x%x).\n", dwret);
|
||||
- /* conversion bug: we see 0x1c9c380deadbee6 on Wine */
|
||||
- todo_wine ok(old_attrib.LastAccessTime.QuadPart == new_attrib.LastAccessTime.QuadPart,
|
||||
- "Junction point folder's access time does not match (0x%llx != 0x%llx).\n",
|
||||
- new_attrib.LastAccessTime.QuadPart, old_attrib.LastAccessTime.QuadPart);
|
||||
+ ok(old_attrib.LastAccessTime.QuadPart == new_attrib.LastAccessTime.QuadPart,
|
||||
+ "Junction point folder's access time does not match (0x%llx != 0x%llx).\n",
|
||||
+ new_attrib.LastAccessTime.QuadPart, old_attrib.LastAccessTime.QuadPart);
|
||||
CloseHandle(hJunction);
|
||||
|
||||
/* Check deleting a junction point as if it were a directory */
|
||||
--
|
||||
1.7.9.5
|
||||
|
||||
|
@@ -1,69 +0,0 @@
|
||||
From f8bf15e30d5e0b9e30ceb644c07449b7782efb72 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 16 Jan 2014 21:07:43 -0700
|
||||
Subject: ntdll: Use relative paths for creating links.
|
||||
|
||||
---
|
||||
dlls/ntdll/file.c | 39 +++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 39 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index b4e06d1..6907b2b 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -1487,6 +1487,7 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer)
|
||||
int dest_fd, needs_close;
|
||||
UNICODE_STRING nt_dest;
|
||||
NTSTATUS status;
|
||||
+ char *p;
|
||||
|
||||
if ((status = server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
|
||||
return status;
|
||||
@@ -1500,6 +1501,44 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer)
|
||||
goto cleanup;
|
||||
dest_allocated = TRUE;
|
||||
|
||||
+ p = strstr(unix_src.Buffer, "/dosdevices/");
|
||||
+ if (p)
|
||||
+ {
|
||||
+ int count = -1; /* do not count the slash at the end of dosdevices or the last directory */
|
||||
+
|
||||
+ p += 11; /* strlen("/dosdevices") */
|
||||
+ do
|
||||
+ {
|
||||
+ p++; /* skip the slash */
|
||||
+ count++;
|
||||
+ p = strchr(p, '/');
|
||||
+ } while(p);
|
||||
+ FIXME("found %d directories up.\n", count);
|
||||
+ p = strstr(unix_dest.Buffer, "/dosdevices/");
|
||||
+ if (p)
|
||||
+ {
|
||||
+ ANSI_STRING tmp;
|
||||
+ int dest_len;
|
||||
+ char *d;
|
||||
+
|
||||
+ p += 12; /* strlen("/dosdevices/") */
|
||||
+ dest_len = unix_dest.Length - (p-unix_dest.Buffer) + 1;
|
||||
+ tmp.Length = dest_len + 3*count; /* strlen("../") = 3 */
|
||||
+ tmp.Buffer = RtlAllocateHeap(GetProcessHeap(), 0, tmp.Length);
|
||||
+ d = tmp.Buffer;
|
||||
+ for(; count > 0; count--)
|
||||
+ {
|
||||
+ (d++)[0] = '.';
|
||||
+ (d++)[0] = '.';
|
||||
+ (d++)[0] = '/';
|
||||
+ }
|
||||
+ memcpy(d, p, dest_len);
|
||||
+ RtlFreeAnsiString( &unix_dest );
|
||||
+ unix_dest.Length = tmp.Length;
|
||||
+ unix_dest.Buffer = tmp.Buffer;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
TRACE("Linking %s to %s\n", unix_src.Buffer, unix_dest.Buffer);
|
||||
|
||||
/* Produce the link in a temporary location */
|
||||
--
|
||||
1.7.9.5
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
Author: Erich E. Hoover
|
||||
Subject: Implement missing fonts expected by Silverlight.
|
||||
Author: Torsten Kurbad
|
||||
Subject: Implement missing Arial font expected by Silverlight.
|
||||
Revision: 1
|
||||
Fixes: [32323] Implement an Arial replacement font
|
||||
|
@@ -0,0 +1,27 @@
|
||||
From b089b250846590430d7908f2cff86ba40f40a696 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 17 Jul 2014 10:28:42 -0600
|
||||
Subject: strmbase: Fix race condition on InputPin_BeginFlush between
|
||||
csRenderLock and filter.csFilter.
|
||||
|
||||
---
|
||||
dlls/strmbase/renderer.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c
|
||||
index bb91236..fb0902e 100644
|
||||
--- a/dlls/strmbase/renderer.c
|
||||
+++ b/dlls/strmbase/renderer.c
|
||||
@@ -130,8 +130,8 @@ static HRESULT WINAPI BaseRenderer_InputPin_BeginFlush(IPin * iface)
|
||||
|
||||
TRACE("(%p/%p)->()\n", This, iface);
|
||||
|
||||
- EnterCriticalSection(&pFilter->filter.csFilter);
|
||||
EnterCriticalSection(&pFilter->csRenderLock);
|
||||
+ EnterCriticalSection(&pFilter->filter.csFilter);
|
||||
EnterCriticalSection(This->pin.pCritSec);
|
||||
hr = BaseInputPinImpl_BeginFlush(iface);
|
||||
if (SUCCEEDED(hr))
|
||||
--
|
||||
1.7.9.5
|
||||
|
@@ -0,0 +1,37 @@
|
||||
From 9941d6cd8ac96f5f90d3a93257acb9bee8181ba6 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 17 Jul 2014 10:35:43 -0600
|
||||
Subject: strmbase: Fix race condition on InputPin_EndFlush between
|
||||
csRenderLock and filter.csFilter.
|
||||
|
||||
---
|
||||
dlls/strmbase/renderer.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c
|
||||
index fb0902e..d175fa5 100644
|
||||
--- a/dlls/strmbase/renderer.c
|
||||
+++ b/dlls/strmbase/renderer.c
|
||||
@@ -155,8 +155,8 @@ static HRESULT WINAPI BaseRenderer_InputPin_EndFlush(IPin * iface)
|
||||
|
||||
TRACE("(%p/%p)->()\n", This, pFilter);
|
||||
|
||||
- EnterCriticalSection(&pFilter->filter.csFilter);
|
||||
EnterCriticalSection(&pFilter->csRenderLock);
|
||||
+ EnterCriticalSection(&pFilter->filter.csFilter);
|
||||
EnterCriticalSection(This->pin.pCritSec);
|
||||
hr = BaseInputPinImpl_EndFlush(iface);
|
||||
if (SUCCEEDED(hr))
|
||||
@@ -167,8 +167,8 @@ static HRESULT WINAPI BaseRenderer_InputPin_EndFlush(IPin * iface)
|
||||
hr = BaseRendererImpl_EndFlush(pFilter);
|
||||
}
|
||||
LeaveCriticalSection(This->pin.pCritSec);
|
||||
- LeaveCriticalSection(&pFilter->csRenderLock);
|
||||
LeaveCriticalSection(&pFilter->filter.csFilter);
|
||||
+ LeaveCriticalSection(&pFilter->csRenderLock);
|
||||
return hr;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.9.5
|
||||
|
@@ -0,0 +1,37 @@
|
||||
From 88b8e012138b2fc81718cde5f4e4f50cc6b4ed6b Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 17 Jul 2014 10:37:37 -0600
|
||||
Subject: strmbase: Fix race condition on InputPin_EndOfStream between
|
||||
csRenderLock and filter.csFilter.
|
||||
|
||||
---
|
||||
dlls/strmbase/renderer.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c
|
||||
index d175fa5..c8f130c 100644
|
||||
--- a/dlls/strmbase/renderer.c
|
||||
+++ b/dlls/strmbase/renderer.c
|
||||
@@ -105,8 +105,8 @@ static HRESULT WINAPI BaseRenderer_InputPin_EndOfStream(IPin * iface)
|
||||
|
||||
TRACE("(%p/%p)->()\n", This, pFilter);
|
||||
|
||||
- EnterCriticalSection(&pFilter->filter.csFilter);
|
||||
EnterCriticalSection(&pFilter->csRenderLock);
|
||||
+ EnterCriticalSection(&pFilter->filter.csFilter);
|
||||
hr = BaseInputPinImpl_EndOfStream(iface);
|
||||
EnterCriticalSection(This->pin.pCritSec);
|
||||
if (SUCCEEDED(hr))
|
||||
@@ -117,8 +117,8 @@ static HRESULT WINAPI BaseRenderer_InputPin_EndOfStream(IPin * iface)
|
||||
hr = BaseRendererImpl_EndOfStream(pFilter);
|
||||
}
|
||||
LeaveCriticalSection(This->pin.pCritSec);
|
||||
- LeaveCriticalSection(&pFilter->csRenderLock);
|
||||
LeaveCriticalSection(&pFilter->filter.csFilter);
|
||||
+ LeaveCriticalSection(&pFilter->csRenderLock);
|
||||
return hr;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.9.5
|
||||
|
@@ -0,0 +1,27 @@
|
||||
From a67e8965650e75947a899cec4540d428e2cd1236 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 17 Jul 2014 10:30:19 -0600
|
||||
Subject: quartz: Fix race condition on EndOfStream between csRenderLock and
|
||||
filter.csFilter.
|
||||
|
||||
---
|
||||
dlls/quartz/dsoundrender.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c
|
||||
index 57e3d3b..8c67374 100644
|
||||
--- a/dlls/quartz/dsoundrender.c
|
||||
+++ b/dlls/quartz/dsoundrender.c
|
||||
@@ -254,8 +254,8 @@ static HRESULT DSoundRender_HandleEndOfStream(DSoundRenderImpl *This)
|
||||
LeaveCriticalSection(&This->renderer.filter.csFilter);
|
||||
LeaveCriticalSection(&This->renderer.csRenderLock);
|
||||
WaitForSingleObject(This->blocked, 10);
|
||||
- EnterCriticalSection(&This->renderer.filter.csFilter);
|
||||
EnterCriticalSection(&This->renderer.csRenderLock);
|
||||
+ EnterCriticalSection(&This->renderer.filter.csFilter);
|
||||
This->in_loop = 0;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.9.5
|
||||
|
@@ -0,0 +1,27 @@
|
||||
From 90faffc9d768d674eb603dabe72b107444e19712 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 17 Jul 2014 10:31:17 -0600
|
||||
Subject: quartz: Fix race condition on EndFlush between csRenderLock and
|
||||
filter.csFilter.
|
||||
|
||||
---
|
||||
dlls/quartz/videorenderer.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c
|
||||
index 4e8f359..5fe0aea 100644
|
||||
--- a/dlls/quartz/videorenderer.c
|
||||
+++ b/dlls/quartz/videorenderer.c
|
||||
@@ -377,8 +377,8 @@ static HRESULT WINAPI VideoRenderer_EndFlush(BaseRenderer* iface)
|
||||
LeaveCriticalSection(&iface->csRenderLock);
|
||||
LeaveCriticalSection(&iface->filter.csFilter);
|
||||
WaitForSingleObject(This->hEvent, INFINITE);
|
||||
- EnterCriticalSection(&iface->filter.csFilter);
|
||||
EnterCriticalSection(&iface->csRenderLock);
|
||||
+ EnterCriticalSection(&iface->filter.csFilter);
|
||||
EnterCriticalSection(iface->pInputPin->pin.pCritSec);
|
||||
}
|
||||
if (This->renderer.filter.state == State_Paused) {
|
||||
--
|
||||
1.7.9.5
|
||||
|
@@ -0,0 +1,25 @@
|
||||
From abaf77994534eaa61cdb2e6dad10de2d5ff7f50f Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Fri, 18 Jul 2014 10:57:13 -0600
|
||||
Subject: quartz: Fix race condition between EndOfStream and Pause.
|
||||
|
||||
---
|
||||
dlls/quartz/dsoundrender.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c
|
||||
index 8c67374..2914b15 100644
|
||||
--- a/dlls/quartz/dsoundrender.c
|
||||
+++ b/dlls/quartz/dsoundrender.c
|
||||
@@ -243,7 +243,7 @@ end:
|
||||
|
||||
static HRESULT DSoundRender_HandleEndOfStream(DSoundRenderImpl *This)
|
||||
{
|
||||
- while (1)
|
||||
+ while (This->renderer.filter.state == State_Running)
|
||||
{
|
||||
DWORD pos1, pos2;
|
||||
DSoundRender_UpdatePositions(This, &pos1, &pos2);
|
||||
--
|
||||
1.7.9.5
|
||||
|
4
patches/17-strmbase-Lock_Race_Conditions/definition
Normal file
4
patches/17-strmbase-Lock_Race_Conditions/definition
Normal file
@@ -0,0 +1,4 @@
|
||||
Author: Erich E. Hoover
|
||||
Subject: Fix possible race conditions in strmbase/quartz.
|
||||
Revision: 1
|
||||
Fixes: [31566] Fix race conditions and deadlocks in strmbase/quartz
|
@@ -0,0 +1,58 @@
|
||||
From fb2417ad73fb67b20340a65d645b9dac245bdbf0 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Tue, 22 Jul 2014 08:26:47 -0600
|
||||
Subject: quartz: Include the stream position in addition to the reference
|
||||
clock offset in the time returned by MediaSeeking_GetPositions.
|
||||
|
||||
---
|
||||
dlls/quartz/filtergraph.c | 27 ++++++++++++++++++++++++---
|
||||
1 file changed, 24 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c
|
||||
index 771a330..ad24691 100644
|
||||
--- a/dlls/quartz/filtergraph.c
|
||||
+++ b/dlls/quartz/filtergraph.c
|
||||
@@ -2539,16 +2539,37 @@ static HRESULT WINAPI MediaSeeking_SetPositions(IMediaSeeking *iface, LONGLONG *
|
||||
return hr;
|
||||
}
|
||||
|
||||
+static HRESULT WINAPI found_getposition(IFilterGraphImpl *This, IMediaSeeking *seek, DWORD_PTR pargs)
|
||||
+{
|
||||
+ struct pos_args *args = (void*)pargs;
|
||||
+
|
||||
+ return IMediaSeeking_GetPositions(seek, args->current, args->stop);
|
||||
+}
|
||||
+
|
||||
static HRESULT WINAPI MediaSeeking_GetPositions(IMediaSeeking *iface, LONGLONG *pCurrent,
|
||||
LONGLONG *pStop)
|
||||
{
|
||||
IFilterGraphImpl *This = impl_from_IMediaSeeking(iface);
|
||||
+ struct pos_args args;
|
||||
+ LONGLONG time = 0;
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("(%p/%p)->(%p, %p)\n", This, iface, pCurrent, pStop);
|
||||
- hr = IMediaSeeking_GetCurrentPosition(iface, pCurrent);
|
||||
- if (SUCCEEDED(hr))
|
||||
- hr = IMediaSeeking_GetStopPosition(iface, pStop);
|
||||
+
|
||||
+ args.current = pCurrent;
|
||||
+ args.stop = pStop;
|
||||
+ EnterCriticalSection(&This->cs);
|
||||
+ hr = all_renderers_seek(This, found_getposition, (DWORD_PTR)&args);
|
||||
+ if (This->state == State_Running && This->refClock && This->start_time >= 0)
|
||||
+ {
|
||||
+ IReferenceClock_GetTime(This->refClock, &time);
|
||||
+ if (time)
|
||||
+ time -= This->start_time;
|
||||
+ }
|
||||
+ if (This->pause_time > 0)
|
||||
+ time += This->pause_time;
|
||||
+ *pCurrent += time;
|
||||
+ LeaveCriticalSection(&This->cs);
|
||||
|
||||
return hr;
|
||||
}
|
||||
--
|
||||
1.7.9.5
|
||||
|
@@ -0,0 +1,72 @@
|
||||
From 77648650211d1750a49494b2d0bcf7943b58e1b1 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Tue, 22 Jul 2014 08:27:52 -0600
|
||||
Subject: quartz: Implement MediaSeeking_GetCurrentPosition on top of
|
||||
MediaSeeking_GetPositions.
|
||||
|
||||
---
|
||||
dlls/quartz/filtergraph.c | 41 ++++++++++++++++-------------------------
|
||||
1 file changed, 16 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c
|
||||
index ad24691..4c093f3 100644
|
||||
--- a/dlls/quartz/filtergraph.c
|
||||
+++ b/dlls/quartz/filtergraph.c
|
||||
@@ -2451,31 +2451,6 @@ static HRESULT WINAPI MediaSeeking_GetStopPosition(IMediaSeeking *iface, LONGLON
|
||||
return hr;
|
||||
}
|
||||
|
||||
-static HRESULT WINAPI MediaSeeking_GetCurrentPosition(IMediaSeeking *iface, LONGLONG *pCurrent)
|
||||
-{
|
||||
- IFilterGraphImpl *This = impl_from_IMediaSeeking(iface);
|
||||
- LONGLONG time = 0;
|
||||
-
|
||||
- if (!pCurrent)
|
||||
- return E_POINTER;
|
||||
-
|
||||
- EnterCriticalSection(&This->cs);
|
||||
- if (This->state == State_Running && This->refClock && This->start_time >= 0)
|
||||
- {
|
||||
- IReferenceClock_GetTime(This->refClock, &time);
|
||||
- if (time)
|
||||
- time -= This->start_time;
|
||||
- }
|
||||
- if (This->pause_time > 0)
|
||||
- time += This->pause_time;
|
||||
- *pCurrent = time;
|
||||
- LeaveCriticalSection(&This->cs);
|
||||
-
|
||||
- TRACE("Time: %u.%03u\n", (DWORD)(*pCurrent / 10000000), (DWORD)((*pCurrent / 10000)%1000));
|
||||
-
|
||||
- return S_OK;
|
||||
-}
|
||||
-
|
||||
static HRESULT WINAPI MediaSeeking_ConvertTimeFormat(IMediaSeeking *iface, LONGLONG *pTarget,
|
||||
const GUID *pTargetFormat, LONGLONG Source, const GUID *pSourceFormat)
|
||||
{
|
||||
@@ -2574,6 +2549,22 @@ static HRESULT WINAPI MediaSeeking_GetPositions(IMediaSeeking *iface, LONGLONG *
|
||||
return hr;
|
||||
}
|
||||
|
||||
+static HRESULT WINAPI MediaSeeking_GetCurrentPosition(IMediaSeeking *iface, LONGLONG *pCurrent)
|
||||
+{
|
||||
+ IFilterGraphImpl *This = impl_from_IMediaSeeking(iface);
|
||||
+ LONGLONG time;
|
||||
+ HRESULT hr;
|
||||
+
|
||||
+ if (!pCurrent)
|
||||
+ return E_POINTER;
|
||||
+
|
||||
+ hr = MediaSeeking_GetPositions(iface, pCurrent, &time);
|
||||
+
|
||||
+ TRACE("Time: %u.%03u\n", (DWORD)(*pCurrent / 10000000), (DWORD)((*pCurrent / 10000)%1000));
|
||||
+
|
||||
+ return hr;
|
||||
+}
|
||||
+
|
||||
static HRESULT WINAPI MediaSeeking_GetAvailable(IMediaSeeking *iface, LONGLONG *pEarliest,
|
||||
LONGLONG *pLatest)
|
||||
{
|
||||
--
|
||||
1.7.9.5
|
||||
|
@@ -0,0 +1,68 @@
|
||||
From e2abc9b73d2e909f62468de5d66c5d9ec51fce0f Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Tue, 22 Jul 2014 08:32:31 -0600
|
||||
Subject: quartz: Implement MediaSeeking_GetStopPosition on top of
|
||||
MediaSeeking_GetPositions.
|
||||
|
||||
---
|
||||
dlls/quartz/filtergraph.c | 37 ++++++++++++++++---------------------
|
||||
1 file changed, 16 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c
|
||||
index 4c093f3..0d06ba4 100644
|
||||
--- a/dlls/quartz/filtergraph.c
|
||||
+++ b/dlls/quartz/filtergraph.c
|
||||
@@ -2430,27 +2430,6 @@ static HRESULT WINAPI MediaSeeking_GetDuration(IMediaSeeking *iface, LONGLONG *p
|
||||
return hr;
|
||||
}
|
||||
|
||||
-static HRESULT WINAPI MediaSeeking_GetStopPosition(IMediaSeeking *iface, LONGLONG *pStop)
|
||||
-{
|
||||
- IFilterGraphImpl *This = impl_from_IMediaSeeking(iface);
|
||||
- HRESULT hr = S_OK;
|
||||
-
|
||||
- TRACE("(%p/%p)->(%p)\n", This, iface, pStop);
|
||||
-
|
||||
- if (!pStop)
|
||||
- return E_POINTER;
|
||||
-
|
||||
- EnterCriticalSection(&This->cs);
|
||||
- if (This->stop_position < 0)
|
||||
- /* Stop position not set, use duration instead */
|
||||
- hr = IMediaSeeking_GetDuration(iface, pStop);
|
||||
- else
|
||||
- *pStop = This->stop_position;
|
||||
- LeaveCriticalSection(&This->cs);
|
||||
-
|
||||
- return hr;
|
||||
-}
|
||||
-
|
||||
static HRESULT WINAPI MediaSeeking_ConvertTimeFormat(IMediaSeeking *iface, LONGLONG *pTarget,
|
||||
const GUID *pTargetFormat, LONGLONG Source, const GUID *pSourceFormat)
|
||||
{
|
||||
@@ -2565,6 +2544,22 @@ static HRESULT WINAPI MediaSeeking_GetCurrentPosition(IMediaSeeking *iface, LONG
|
||||
return hr;
|
||||
}
|
||||
|
||||
+static HRESULT WINAPI MediaSeeking_GetStopPosition(IMediaSeeking *iface, LONGLONG *pStop)
|
||||
+{
|
||||
+ IFilterGraphImpl *This = impl_from_IMediaSeeking(iface);
|
||||
+ LONGLONG time;
|
||||
+ HRESULT hr;
|
||||
+
|
||||
+ TRACE("(%p/%p)->(%p)\n", This, iface, pStop);
|
||||
+
|
||||
+ if (!pStop)
|
||||
+ return E_POINTER;
|
||||
+
|
||||
+ hr = MediaSeeking_GetPositions(iface, &time, pStop);
|
||||
+
|
||||
+ return hr;
|
||||
+}
|
||||
+
|
||||
static HRESULT WINAPI MediaSeeking_GetAvailable(IMediaSeeking *iface, LONGLONG *pEarliest,
|
||||
LONGLONG *pLatest)
|
||||
{
|
||||
--
|
||||
1.7.9.5
|
||||
|
@@ -0,0 +1,44 @@
|
||||
From 3c9438db949d434b8cb5fba36ee55df384624016 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Tue, 22 Jul 2014 08:34:09 -0600
|
||||
Subject: quartz: Remove unused cache of MediaSeeking stop position.
|
||||
|
||||
---
|
||||
dlls/quartz/filtergraph.c | 7 -------
|
||||
1 file changed, 7 deletions(-)
|
||||
|
||||
diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c
|
||||
index 0d06ba4..df6b4bd 100644
|
||||
--- a/dlls/quartz/filtergraph.c
|
||||
+++ b/dlls/quartz/filtergraph.c
|
||||
@@ -201,7 +201,6 @@ typedef struct _IFilterGraphImpl {
|
||||
GUID timeformatseek;
|
||||
REFERENCE_TIME start_time;
|
||||
REFERENCE_TIME pause_time;
|
||||
- LONGLONG stop_position;
|
||||
LONG recursioncount;
|
||||
IUnknown *pSite;
|
||||
LONG version;
|
||||
@@ -2471,11 +2470,6 @@ static HRESULT WINAPI MediaSeeking_SetPositions(IMediaSeeking *iface, LONGLONG *
|
||||
(dwCurrentFlags & 0x7) != AM_SEEKING_NoPositioning)
|
||||
FIXME("Adjust method %x not handled yet!\n", dwCurrentFlags & 0x7);
|
||||
|
||||
- if ((dwStopFlags & 0x7) == AM_SEEKING_AbsolutePositioning)
|
||||
- This->stop_position = *pStop;
|
||||
- else if ((dwStopFlags & 0x7) != AM_SEEKING_NoPositioning)
|
||||
- FIXME("Stop position not handled yet!\n");
|
||||
-
|
||||
if (state == State_Running && !(dwCurrentFlags & AM_SEEKING_NoFlush))
|
||||
IMediaControl_Pause(&This->IMediaControl_iface);
|
||||
args.current = pCurrent;
|
||||
@@ -5669,7 +5663,6 @@ HRESULT FilterGraph_create(IUnknown *pUnkOuter, LPVOID *ppObj)
|
||||
fimpl->nItfCacheEntries = 0;
|
||||
memcpy(&fimpl->timeformatseek, &TIME_FORMAT_MEDIA_TIME, sizeof(GUID));
|
||||
fimpl->start_time = fimpl->pause_time = 0;
|
||||
- fimpl->stop_position = -1;
|
||||
fimpl->punkFilterMapper2 = NULL;
|
||||
fimpl->recursioncount = 0;
|
||||
fimpl->version = 0;
|
||||
--
|
||||
1.7.9.5
|
||||
|
4
patches/18-quartz-MediaSeeking_Positions/definition
Normal file
4
patches/18-quartz-MediaSeeking_Positions/definition
Normal file
@@ -0,0 +1,4 @@
|
||||
Author: Erich E. Hoover
|
||||
Subject: Return correct IMediaSeeking stream positions in quartz.
|
||||
Revision: 1
|
||||
Fixes: [23174] Return correct IMediaSeeking stream positions in quartz
|
@@ -1,6 +1,6 @@
|
||||
From 46663b2c660db111ba9a208929cec841caa9308a Mon Sep 17 00:00:00 2001
|
||||
From 343eb8dc82b72e641dc239a339f2419bb7f936c9 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Tue, 27 May 2014 02:53:05 +0200
|
||||
Date: Sun, 20 Jul 2014 22:22:14 +0200
|
||||
Subject: wined3d: allow changing strict drawing through an exported function
|
||||
|
||||
---
|
||||
@@ -9,21 +9,21 @@ Subject: wined3d: allow changing strict drawing through an exported function
|
||||
2 files changed, 7 insertions(+)
|
||||
|
||||
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
|
||||
index f1a45dd..7ee0914 100644
|
||||
index a53c74b..7c9ebbd 100644
|
||||
--- a/dlls/wined3d/wined3d.spec
|
||||
+++ b/dlls/wined3d/wined3d.spec
|
||||
@@ -277,3 +277,5 @@
|
||||
@@ -271,3 +271,5 @@
|
||||
@ cdecl wined3d_volume_map(ptr ptr ptr long)
|
||||
@ cdecl wined3d_volume_preload(ptr)
|
||||
@ cdecl wined3d_volume_set_priority(ptr long)
|
||||
@ cdecl wined3d_volume_unmap(ptr)
|
||||
+
|
||||
+@ cdecl wined3d_strictdrawing_set(long)
|
||||
\ No newline at end of file
|
||||
diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c
|
||||
index e2a7f3f..c160ae0 100644
|
||||
index 7ab2448..8b4134d 100644
|
||||
--- a/dlls/wined3d/wined3d_main.c
|
||||
+++ b/dlls/wined3d/wined3d_main.c
|
||||
@@ -509,6 +509,11 @@ void wined3d_unregister_window(HWND window)
|
||||
@@ -505,6 +505,11 @@ void wined3d_unregister_window(HWND window)
|
||||
wined3d_wndproc_mutex_unlock();
|
||||
}
|
||||
|
||||
|
@@ -1,14 +1,14 @@
|
||||
From b1b13aac629c00d03d68dcca64cb81e976e20580 Mon Sep 17 00:00:00 2001
|
||||
From 018b5f5d6211aa706e5aef762acb98d39240d9f1 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 3 Apr 2014 21:36:33 -0600
|
||||
Date: Sun, 20 Jul 2014 22:29:02 +0200
|
||||
Subject: wined3d: Silence repeated resource_check_usage FIXME.
|
||||
|
||||
---
|
||||
dlls/wined3d/resource.c | 5 ++++-
|
||||
dlls/wined3d/resource.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
|
||||
index 3a54dd8..d164681 100644
|
||||
index 2f44d36..5988c82 100644
|
||||
--- a/dlls/wined3d/resource.c
|
||||
+++ b/dlls/wined3d/resource.c
|
||||
@@ -50,7 +50,7 @@ static DWORD resource_access_from_pool(enum wined3d_pool pool)
|
||||
@@ -20,8 +20,8 @@ index 3a54dd8..d164681 100644
|
||||
| WINED3DUSAGE_DEPTHSTENCIL
|
||||
| WINED3DUSAGE_WRITEONLY
|
||||
| WINED3DUSAGE_DYNAMIC
|
||||
@@ -60,7 +60,10 @@ static void resource_check_usage(DWORD usage)
|
||||
| WINED3DUSAGE_TEXTURE;
|
||||
@@ -66,7 +66,10 @@ static void resource_check_usage(DWORD usage)
|
||||
* driver. */
|
||||
|
||||
if (usage & ~handled)
|
||||
+ {
|
||||
@@ -32,5 +32,5 @@ index 3a54dd8..d164681 100644
|
||||
WARN_(d3d_perf)("WINED3DUSAGE_DYNAMIC used without WINED3DUSAGE_WRITEONLY.\n");
|
||||
}
|
||||
--
|
||||
1.7.9.5
|
||||
1.8.3.2
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user