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