mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-06 08:39:34 +00:00
quartz: Open files with FILE_SHARE_DELETE in FileSource.
Some games (such as Digimon Survive) create temporary video files and will hang if deleting them fails. Open the files with FILE_SHARE_DELETE, which will allow this deletion to go ahead even if the FileSource hasn't yet been closed. Note that many windows codec packs do themselves open files without FILE_SHARE_DELETE, so a similar hang can be observed in some windows configurations. I haven't checked that this is the file share mode used on windows (alas, I don't have a windows machine available), so I haven't removed the FIXME comment. Equally, I also updated the CreateFileW() call in get_media_type(), but that _may_ be unnecessary. Signed-off-by: David Gow <david@ingeniumdigital.com>
This commit is contained in:
parent
da581d383d
commit
9cfd5d00ca
|
@ -214,7 +214,7 @@ BOOL get_media_type(const WCHAR *filename, GUID *majortype, GUID *subtype, GUID
|
|||
}
|
||||
}
|
||||
|
||||
if ((file = CreateFileW(filename, GENERIC_READ, FILE_SHARE_READ, NULL,
|
||||
if ((file = CreateFileW(filename, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_DELETE, NULL,
|
||||
OPEN_EXISTING, 0, NULL)) == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
WARN("Failed to open file %s, error %lu.\n", debugstr_w(filename), GetLastError());
|
||||
|
@ -464,7 +464,7 @@ static HRESULT WINAPI FileSource_Load(IFileSourceFilter * iface, LPCOLESTR pszFi
|
|||
|
||||
/* open file */
|
||||
/* FIXME: check the sharing values that native uses */
|
||||
hFile = CreateFileW(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
|
||||
hFile = CreateFileW(pszFileName, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
|
||||
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue