Jacek Caban : explorerframe: Moved TaskbarList implementation to explorerframe.

Alexandre Julliard julliard at winehq.org
Fri Nov 2 15:52:01 CDT 2012


Module: wine
Branch: master
Commit: deeb14e0ee39087a4f629cf332d586b44559427c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=deeb14e0ee39087a4f629cf332d586b44559427c

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Nov  2 10:26:26 2012 +0100

explorerframe: Moved TaskbarList implementation to explorerframe.

---

 dlls/explorerframe/Makefile.in                |    3 ++-
 dlls/explorerframe/explorerframe.idl          |    7 +++++++
 dlls/explorerframe/explorerframe_main.c       |    4 ++++
 dlls/explorerframe/explorerframe_main.h       |   13 +++++++++++++
 dlls/{ieframe => explorerframe}/taskbarlist.c |   10 +++++-----
 dlls/ieframe/Makefile.in                      |    1 -
 dlls/ieframe/ieframe.h                        |    1 -
 dlls/ieframe/ieframe_main.c                   |   17 -----------------
 dlls/ieframe/ieframe_v1.idl                   |    6 ------
 9 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/dlls/explorerframe/Makefile.in b/dlls/explorerframe/Makefile.in
index 975f197..dcb2826 100644
--- a/dlls/explorerframe/Makefile.in
+++ b/dlls/explorerframe/Makefile.in
@@ -4,7 +4,8 @@ IMPORTS   = uuid ole32 shell32 user32
 
 C_SRCS = \
 	explorerframe_main.c \
-	nstc.c
+	nstc.c \
+	taskbarlist.c
 
 IDL_R_SRCS = explorerframe.idl
 
diff --git a/dlls/explorerframe/explorerframe.idl b/dlls/explorerframe/explorerframe.idl
index 8171396..f7d6ece 100644
--- a/dlls/explorerframe/explorerframe.idl
+++ b/dlls/explorerframe/explorerframe.idl
@@ -24,3 +24,10 @@
     uuid(ae054212-3535-4430-83ed-d501aa6680e6)
 ]
 coclass NamespaceTreeControl { interface INameSpaceTreeControl2; }
+
+[
+    helpstring("Task Bar Communication"),
+    threading(apartment),
+    uuid(56fdf344-fd6d-11d0-958a-006097c9a090)
+]
+coclass TaskbarList { interface ITaskbarList; }
diff --git a/dlls/explorerframe/explorerframe_main.c b/dlls/explorerframe/explorerframe_main.c
index e26082f..bdb77a1 100644
--- a/dlls/explorerframe/explorerframe_main.c
+++ b/dlls/explorerframe/explorerframe_main.c
@@ -199,12 +199,16 @@ static const IClassFactoryVtbl EFCF_Vtbl =
 HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
 {
     static IClassFactoryImpl NSTCClassFactory = {{&EFCF_Vtbl}, NamespaceTreeControl_Constructor};
+    static IClassFactoryImpl TaskbarListFactory = {{&EFCF_Vtbl}, TaskbarList_Constructor};
 
     TRACE("%s, %s, %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
 
     if(IsEqualGUID(&CLSID_NamespaceTreeControl, rclsid))
         return IClassFactory_QueryInterface(&NSTCClassFactory.IClassFactory_iface, riid, ppv);
 
+    if(IsEqualGUID(&CLSID_TaskbarList, rclsid))
+        return IClassFactory_QueryInterface(&TaskbarListFactory.IClassFactory_iface, riid, ppv);
+
     return CLASS_E_CLASSNOTAVAILABLE;
 }
 
diff --git a/dlls/explorerframe/explorerframe_main.h b/dlls/explorerframe/explorerframe_main.h
index 7fc2b45..44e7253 100644
--- a/dlls/explorerframe/explorerframe_main.h
+++ b/dlls/explorerframe/explorerframe_main.h
@@ -21,6 +21,8 @@
 #ifndef __WINE_EXPLORERFRAME_H
 #define __WINE_EXPLORERFRAME_H
 
+#define COBJMACROS
+
 #include "shlobj.h"
 
 /* Not declared in commctrl.h ("for internal use (msdn)") */
@@ -33,5 +35,16 @@ static inline void EFRAME_LockModule(void) { InterlockedIncrement( &EFRAME_refCo
 static inline void EFRAME_UnlockModule(void) { InterlockedDecrement( &EFRAME_refCount ); }
 
 HRESULT NamespaceTreeControl_Constructor(IUnknown *pUnkOuter, REFIID riid, void **ppv) DECLSPEC_HIDDEN;
+HRESULT TaskbarList_Constructor(IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
+
+static inline void *heap_alloc(size_t len)
+{
+    return HeapAlloc(GetProcessHeap(), 0, len);
+}
+
+static inline BOOL heap_free(void *mem)
+{
+    return HeapFree(GetProcessHeap(), 0, mem);
+}
 
 #endif /* __WINE_EXPLORERFRAME_H */
diff --git a/dlls/ieframe/taskbarlist.c b/dlls/explorerframe/taskbarlist.c
similarity index 97%
rename from dlls/ieframe/taskbarlist.c
rename to dlls/explorerframe/taskbarlist.c
index f432317..d40f652 100644
--- a/dlls/ieframe/taskbarlist.c
+++ b/dlls/explorerframe/taskbarlist.c
@@ -18,7 +18,7 @@
  *
  */
 
-#include "ieframe.h"
+#include "explorerframe_main.h"
 
 #include "wine/debug.h"
 
@@ -78,7 +78,7 @@ static ULONG STDMETHODCALLTYPE taskbar_list_Release(ITaskbarList4 *iface)
     if (!refcount)
     {
         heap_free(This);
-        unlock_module();
+        EFRAME_UnlockModule();
     }
 
     return refcount;
@@ -289,7 +289,7 @@ static const struct ITaskbarList4Vtbl taskbar_list_vtbl =
     taskbar_list_SetTabProperties,
 };
 
-HRESULT WINAPI TaskbarList_Create(IClassFactory *iface, IUnknown *outer, REFIID riid, void **taskbar_list)
+HRESULT TaskbarList_Constructor(IUnknown *outer, REFIID riid, void **taskbar_list)
 {
     struct taskbar_list *object;
     HRESULT hres;
@@ -303,7 +303,7 @@ HRESULT WINAPI TaskbarList_Create(IClassFactory *iface, IUnknown *outer, REFIID
         return CLASS_E_NOAGGREGATION;
     }
 
-    object = heap_alloc_zero(sizeof(*object));
+    object = heap_alloc(sizeof(*object));
     if (!object)
     {
         ERR("Failed to allocate taskbar list object memory\n");
@@ -313,7 +313,7 @@ HRESULT WINAPI TaskbarList_Create(IClassFactory *iface, IUnknown *outer, REFIID
 
     object->ITaskbarList4_iface.lpVtbl = &taskbar_list_vtbl;
     object->refcount = 1;
-    lock_module();
+    EFRAME_LockModule();
 
     TRACE("Created ITaskbarList4 %p\n", object);
 
diff --git a/dlls/ieframe/Makefile.in b/dlls/ieframe/Makefile.in
index dca216b..38800f1 100644
--- a/dlls/ieframe/Makefile.in
+++ b/dlls/ieframe/Makefile.in
@@ -18,7 +18,6 @@ C_SRCS = \
 	persist.c \
 	shellbrowser.c \
 	shelluihelper.c \
-	taskbarlist.c \
 	urlhist.c \
 	view.c \
 	webbrowser.c
diff --git a/dlls/ieframe/ieframe.h b/dlls/ieframe/ieframe.h
index 4698008..8dd3f17 100644
--- a/dlls/ieframe/ieframe.h
+++ b/dlls/ieframe/ieframe.h
@@ -305,7 +305,6 @@ HRESULT register_class_object(BOOL) DECLSPEC_HIDDEN;
 HRESULT WINAPI CUrlHistory_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
 HRESULT WINAPI InternetExplorer_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
 HRESULT WINAPI InternetShortcut_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
-HRESULT WINAPI TaskbarList_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
 HRESULT WINAPI WebBrowser_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
 HRESULT WINAPI WebBrowserV1_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
 
diff --git a/dlls/ieframe/ieframe_main.c b/dlls/ieframe/ieframe_main.c
index 56cd663..7c0b37b 100644
--- a/dlls/ieframe/ieframe_main.c
+++ b/dlls/ieframe/ieframe_main.c
@@ -201,16 +201,6 @@ static const IClassFactoryVtbl CUrlHistoryFactoryVtbl = {
 
 static IClassFactory CUrlHistoryFactory = { &CUrlHistoryFactoryVtbl };
 
-static const IClassFactoryVtbl TaskbarListFactoryVtbl = {
-    ClassFactory_QueryInterface,
-    ClassFactory_AddRef,
-    ClassFactory_Release,
-    TaskbarList_Create,
-    ClassFactory_LockServer
-};
-
-static IClassFactory TaskbarListFactory = { &TaskbarListFactoryVtbl };
-
 /******************************************************************
  *              DllMain (ieframe.@)
  */
@@ -250,7 +240,6 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
         return IClassFactory_QueryInterface(&WebBrowserV1Factory, riid, ppv);
     }
 
-
     if(IsEqualGUID(rclsid, &CLSID_InternetShortcut)) {
         TRACE("(CLSID_InternetShortcut %s %p)\n", debugstr_guid(riid), ppv);
         return IClassFactory_QueryInterface(&InternetShortcutFactory, riid, ppv);
@@ -261,12 +250,6 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
         return IClassFactory_QueryInterface(&CUrlHistoryFactory, riid, ppv);
     }
 
-    if(IsEqualGUID(&CLSID_TaskbarList, rclsid)) {
-        TRACE("(CLSID_TaskbarList %s %p)\n", debugstr_guid(riid), ppv);
-        return IClassFactory_QueryInterface(&TaskbarListFactory, riid, ppv);
-    }
-
-
     FIXME("%s %s %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
     return CLASS_E_CLASSNOTAVAILABLE;
 }
diff --git a/dlls/ieframe/ieframe_v1.idl b/dlls/ieframe/ieframe_v1.idl
index f4f7954..a7d3543 100644
--- a/dlls/ieframe/ieframe_v1.idl
+++ b/dlls/ieframe/ieframe_v1.idl
@@ -30,12 +30,6 @@
 ] coclass CUrlHistory { interface IUrlHistoryStg2; }
 
 [
-    helpstring("Task Bar Communication"),
-    threading(apartment),
-    uuid(56fdf344-fd6d-11d0-958a-006097c9a090)
-] coclass TaskbarList { interface ITaskbarList; }
-
-[
     helpstring("Internet Shortcut"),
     threading(apartment),
     progid("InternetShortcut"),




More information about the wine-cvs mailing list