Nikolay Sivov : dwrite: Implement GetLastWriteTime() for local stream.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Nov 18 10:25:19 CST 2014
Module: wine
Branch: master
Commit: f16960aeb827037bd933e4d61e0fc9f3dc06c7d5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f16960aeb827037bd933e4d61e0fc9f3dc06c7d5
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Tue Nov 18 12:43:10 2014 +0300
dwrite: Implement GetLastWriteTime() for local stream.
---
dlls/dwrite/font.c | 26 ++++++++++++++++----------
dlls/dwrite/tests/font.c | 7 +++++++
2 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index 91aca96..ed38a6f 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -1973,11 +1973,17 @@ HRESULT create_fontface(DWRITE_FONT_FACE_TYPE facetype, UINT32 files_number, IDW
}
/* IDWriteLocalFontFileLoader and its required IDWriteFontFileStream */
+struct local_refkey
+{
+ FILETIME writetime;
+ WCHAR name[1];
+};
+
struct local_cached_stream
{
struct list entry;
IDWriteFontFileStream *stream;
- void *key;
+ struct local_refkey *key;
UINT32 key_size;
};
@@ -1990,12 +1996,6 @@ struct dwrite_localfontfilestream
HANDLE handle;
};
-struct local_refkey
-{
- FILETIME writetime;
- WCHAR name[1];
-};
-
struct dwrite_localfontfileloader {
IDWriteLocalFontFileLoader IDWriteLocalFontFileLoader_iface;
LONG ref;
@@ -2106,9 +2106,15 @@ static HRESULT WINAPI localfontfilestream_GetFileSize(IDWriteFontFileStream *ifa
static HRESULT WINAPI localfontfilestream_GetLastWriteTime(IDWriteFontFileStream *iface, UINT64 *last_writetime)
{
struct dwrite_localfontfilestream *This = impl_from_IDWriteFontFileStream(iface);
- FIXME("(%p)->(%p): stub\n",This, last_writetime);
- *last_writetime = 0;
- return E_NOTIMPL;
+ ULARGE_INTEGER li;
+
+ TRACE("(%p)->(%p)\n", This, last_writetime);
+
+ li.LowPart = This->entry->key->writetime.dwLowDateTime;
+ li.HighPart = This->entry->key->writetime.dwHighDateTime;
+ *last_writetime = li.QuadPart;
+
+ return S_OK;
}
static const IDWriteFontFileStreamVtbl localfontfilestreamvtbl =
diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c
index b8ff22d..ba916a9 100644
--- a/dlls/dwrite/tests/font.c
+++ b/dlls/dwrite/tests/font.c
@@ -2362,6 +2362,7 @@ static void test_CreateStreamFromKey(void)
IDWriteFontFileLoader *loader;
IDWriteFactory *factory;
IDWriteFontFile *file;
+ UINT64 writetime;
void *key;
UINT32 size;
HRESULT hr;
@@ -2398,6 +2399,12 @@ static void test_CreateStreamFromKey(void)
hr = IDWriteLocalFontFileLoader_CreateStreamFromKey(localloader, key, size, &stream);
ok(hr == S_OK, "got 0x%08x\n", hr);
EXPECT_REF(stream, 1);
+
+ writetime = 0;
+ hr = IDWriteFontFileStream_GetLastWriteTime(stream, &writetime);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(writetime != 0, "got %08x%08x\n", (UINT)(writetime >> 32), (UINT)writetime);
+
IDWriteFontFileStream_Release(stream);
IDWriteLocalFontFileLoader_Release(localloader);
More information about the wine-cvs
mailing list