winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
April 2009
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
664 discussions
Start a n
N
ew thread
Alexandre Julliard : libwine: Don' t export mmap functions for the Windows build.
by Alexandre Julliard
02 Apr '09
02 Apr '09
Module: wine Branch: master Commit: f41b2396457cd133eee0666538ecbf03691b0675 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=f41b2396457cd133eee066653…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 1 20:27:59 2009 +0200 libwine: Don't export mmap functions for the Windows build. --- libs/wine/mmap.c | 29 ++++++++++------------------- libs/wine/wine.def | 5 ----- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/libs/wine/mmap.c b/libs/wine/mmap.c index d107fc7..fc5b1d9 100644 --- a/libs/wine/mmap.c +++ b/libs/wine/mmap.c @@ -41,6 +41,8 @@ #include "wine/library.h" #include "wine/list.h" +#ifdef HAVE_MMAP + struct reserved_area { struct list entry; @@ -51,8 +53,6 @@ struct reserved_area static struct list reserved_areas = LIST_INIT(reserved_areas); static const unsigned int granularity_mask = 0xffff; /* reserved areas have 64k granularity */ -#ifdef HAVE_MMAP - #ifndef MAP_NORESERVE #define MAP_NORESERVE 0 #endif @@ -390,23 +390,6 @@ void mmap_init(void) reserve_dos_area(); } -#else /* HAVE_MMAP */ - -void *wine_anon_mmap( void *start, size_t size, int prot, int flags ) -{ - return (void *)-1; -} - -static inline int munmap( void *ptr, size_t size ) -{ - return 0; -} - -void mmap_init(void) -{ -} - -#endif /*********************************************************************** * wine_mmap_add_reserved_area @@ -602,3 +585,11 @@ int wine_mmap_enum_reserved_areas( int (*enum_func)(void *base, size_t size, voi } return ret; } + +#else /* HAVE_MMAP */ + +void mmap_init(void) +{ +} + +#endif diff --git a/libs/wine/wine.def b/libs/wine/wine.def index 318db78..a99c170 100644 --- a/libs/wine/wine.def +++ b/libs/wine/wine.def @@ -49,7 +49,6 @@ EXPORTS toupperW vsnprintfW vsprintfW - wine_anon_mmap wine_call_on_stack wine_casemap_lower wine_casemap_upper @@ -96,10 +95,6 @@ EXPORTS wine_ldt_is_system wine_ldt_realloc_entries wine_ldt_set_entry - wine_mmap_add_reserved_area - wine_mmap_enum_reserved_areas - wine_mmap_is_in_reserved_area - wine_mmap_remove_reserved_area wine_pthread_get_functions wine_pthread_set_functions wine_switch_to_stack
1
0
0
0
Alexandre Julliard : oleaut32: Don't use 16-bit headers.
by Alexandre Julliard
02 Apr '09
02 Apr '09
Module: wine Branch: master Commit: 0ed1041c63be8bf443da1947185baee931e05df5 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=0ed1041c63be8bf443da19471…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 1 18:20:21 2009 +0200 oleaut32: Don't use 16-bit headers. --- dlls/oleaut32/olepicture.c | 3 +-- dlls/oleaut32/typelib.c | 21 ++++++++++++++++++++- dlls/oleaut32/typelib.h | 1 - 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/dlls/oleaut32/olepicture.c b/dlls/oleaut32/olepicture.c index 03119f2..adaad97 100644 --- a/dlls/oleaut32/olepicture.c +++ b/dlls/oleaut32/olepicture.c @@ -81,8 +81,7 @@ #include "urlmon.h" #include "wine/debug.h" #include "wine/unicode.h" - -#include "wine/wingdi16.h" +#include "wine/library.h" #include "ungif.h" diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c index d1a719b..75a30d2 100644 --- a/dlls/oleaut32/typelib.c +++ b/dlls/oleaut32/typelib.c @@ -66,7 +66,6 @@ #include "winuser.h" #include "lzexpand.h" -#include "wine/winbase16.h" #include "wine/unicode.h" #include "objbase.h" #include "typelib.h" @@ -77,6 +76,26 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); WINE_DECLARE_DEBUG_CHANNEL(typelib); +typedef struct +{ + WORD offset; + WORD length; + WORD flags; + WORD id; + WORD handle; + WORD usage; +} NE_NAMEINFO; + +typedef struct +{ + WORD type_id; /* Type identifier */ + WORD count; /* Number of resources of this type */ + DWORD resloader; /* SetResourceHandler() */ + /* + * Name info array. + */ +} NE_TYPEINFO; + static HRESULT typedescvt_to_variantvt(ITypeInfo *tinfo, const TYPEDESC *tdesc, VARTYPE *vt); static HRESULT TLB_AllocAndInitVarDesc(const VARDESC *src, VARDESC **dest_ptr); diff --git a/dlls/oleaut32/typelib.h b/dlls/oleaut32/typelib.h index 821981f..1fe8ecf 100644 --- a/dlls/oleaut32/typelib.h +++ b/dlls/oleaut32/typelib.h @@ -26,7 +26,6 @@ #include "windef.h" #include "winbase.h" #include "oleauto.h" -#include "wine/windef16.h" #define HELPDLLFLAG (0x0100) #define DO_NOT_SEEK (-1)
1
0
0
0
Alexandre Julliard : shell32: Make shell. dll into a stand-alone 16-bit module.
by Alexandre Julliard
02 Apr '09
02 Apr '09
Module: wine Branch: master Commit: 129ba5ade016a470150ce11ed8f6383bb1103772 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=129ba5ade016a470150ce11ed…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 1 18:20:13 2009 +0200 shell32: Make shell.dll into a stand-alone 16-bit module. --- .gitignore | 1 - configure | 9 ++++++++ configure.ac | 1 + dlls/Makefile.in | 4 --- dlls/shell.dll16/Makefile.in | 19 ++++++++++++++++++ dlls/{shell32 => shell.dll16}/shell.c | 10 +++++++- .../shell.spec => shell.dll16/shell.dll16.spec} | 0 .../version16.rc => shell.dll16/version.rc} | 0 dlls/shell32/Makefile.in | 12 ----------- dlls/shell32/shell32_main.h | 21 -------------------- dlls/shell32/shellreg.c | 1 - dlls/shell32/shlexec.c | 1 - 12 files changed, 37 insertions(+), 42 deletions(-) diff --git a/.gitignore b/.gitignore index 8120c55..93ff5f2 100644 --- a/.gitignore +++ b/.gitignore @@ -84,7 +84,6 @@ dlls/rpcrt4/tests/server_c.c dlls/rpcrt4/tests/server_s.c dlls/setupx.dll16 dlls/shdocvw/shdocvw_v1.tlb -dlls/shell.dll16 dlls/stdole2.tlb/std_ole_v2.tlb dlls/stdole32.tlb/std_ole_v1.tlb dlls/system.drv16 diff --git a/configure b/configure index b45a122..5468a78 100755 --- a/configure +++ b/configure @@ -26853,6 +26853,14 @@ dlls/shdocvw/tests/Makefile: dlls/shdocvw/tests/Makefile.in dlls/Maketest.rules" ac_config_files="$ac_config_files dlls/shdocvw/tests/Makefile" ALL_MAKEFILES="$ALL_MAKEFILES \\ + dlls/shell.dll16/Makefile" +test "x$enable_win16" != xno && ALL_DLL_DIRS="$ALL_DLL_DIRS \\ + shell.dll16" +ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS +dlls/shell.dll16/Makefile: dlls/shell.dll16/Makefile.in dlls/Makedll.rules" +ac_config_files="$ac_config_files dlls/shell.dll16/Makefile" + +ALL_MAKEFILES="$ALL_MAKEFILES \\ dlls/shell32/Makefile" test "x$enable_shell32" != xno && ALL_DLL_DIRS="$ALL_DLL_DIRS \\ shell32" @@ -29204,6 +29212,7 @@ do "dlls/shdoclc/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/shdoclc/Makefile" ;; "dlls/shdocvw/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/shdocvw/Makefile" ;; "dlls/shdocvw/tests/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/shdocvw/tests/Makefile" ;; + "dlls/shell.dll16/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/shell.dll16/Makefile" ;; "dlls/shell32/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/shell32/Makefile" ;; "dlls/shell32/tests/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/shell32/tests/Makefile" ;; "dlls/shfolder/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/shfolder/Makefile" ;; diff --git a/configure.ac b/configure.ac index a243045..e3d4b63 100644 --- a/configure.ac +++ b/configure.ac @@ -2188,6 +2188,7 @@ WINE_CONFIG_MAKEFILE([dlls/sfc_os/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL WINE_CONFIG_MAKEFILE([dlls/shdoclc/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS]) WINE_CONFIG_MAKEFILE([dlls/shdocvw/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS]) WINE_CONFIG_MAKEFILE([dlls/shdocvw/tests/Makefile],[dlls/Maketest.rules],[dlls],[ALL_TEST_DIRS],[enable_tests]) +WINE_CONFIG_MAKEFILE([dlls/shell.dll16/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS],[enable_win16]) WINE_CONFIG_MAKEFILE([dlls/shell32/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS]) WINE_CONFIG_MAKEFILE([dlls/shell32/tests/Makefile],[dlls/Maketest.rules],[dlls],[ALL_TEST_DIRS],[enable_tests]) WINE_CONFIG_MAKEFILE([dlls/shfolder/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS]) diff --git a/dlls/Makefile.in b/dlls/Makefile.in index badffb6..498cb65 100644 --- a/dlls/Makefile.in +++ b/dlls/Makefile.in @@ -25,7 +25,6 @@ WIN16_FILES = \ mmsystem.dll16 \ msvideo.dll16 \ setupx.dll16 \ - shell.dll16 \ system.drv16 \ toolhelp.dll16 \ user.exe16 \ @@ -58,9 +57,6 @@ msvideo.dll16: setupx.dll16: echo "setupapi.dll" >$@ -shell.dll16: - echo "shell32.dll" >$@ - ddeml.dll16 user.exe16: echo "user32.dll" >$@ diff --git a/dlls/shell.dll16/Makefile.in b/dlls/shell.dll16/Makefile.in new file mode 100644 index 0000000..07cf620 --- /dev/null +++ b/dlls/shell.dll16/Makefile.in @@ -0,0 +1,19 @@ +TOPSRCDIR = @top_srcdir@ +TOPOBJDIR = ../.. +SRCDIR = @srcdir@ +VPATH = @srcdir@ +MODULE = shell.dll16 +IMPORTS = shell32 user32 advapi32 kernel32 + +EXTRADLLFLAGS = -Wb,--subsystem,win16,--main-module,shell32.dll +EXTRARCFLAGS = -O res16 + +SPEC_SRCS = shell.dll16.spec + +C_SRCS = shell.c + +RC_SRCS = version.rc + +@MAKE_DLL_RULES@ + +@DEPENDENCIES@ # everything below this line is overwritten by make depend diff --git a/dlls/shell32/shell.c b/dlls/shell.dll16/shell.c similarity index 98% rename from dlls/shell32/shell.c rename to dlls/shell.dll16/shell.c index db49c29..9964b60 100644 --- a/dlls/shell32/shell.c +++ b/dlls/shell.dll16/shell.c @@ -42,7 +42,6 @@ #include "shlwapi.h" #include "wine/winbase16.h" -#include "shell32_main.h" #include "wine/debug.h" @@ -52,6 +51,11 @@ extern HINSTANCE WINAPI WOWShellExecute(HWND hWnd, LPCSTR lpOperation,LPCSTR lpF LPCSTR lpParameters,LPCSTR lpDirectory, INT iShowCmd, void *callback); +#define HICON_16(h32) (LOWORD(h32)) +#define HICON_32(h16) ((HICON)(ULONG_PTR)(h16)) +#define HINSTANCE_32(h16) ((HINSTANCE)(ULONG_PTR)(h16)) +#define HINSTANCE_16(h32) (LOWORD(h32)) + typedef struct { /* structure for dropped files */ WORD wSize; POINT16 ptMousePos; @@ -170,7 +174,9 @@ HINSTANCE16 WINAPI FindExecutable16( LPCSTR lpFile, LPCSTR lpDirectory, */ BOOL16 WINAPI AboutDlgProc16( HWND16 hWnd, UINT16 msg, WPARAM16 wParam, LPARAM lParam ) -{ return (BOOL16)AboutDlgProc( HWND_32(hWnd), msg, wParam, lParam ); +{ + FIXME( "stub\n" ); + return FALSE; } diff --git a/dlls/shell32/shell.spec b/dlls/shell.dll16/shell.dll16.spec similarity index 100% rename from dlls/shell32/shell.spec rename to dlls/shell.dll16/shell.dll16.spec diff --git a/dlls/shell32/version16.rc b/dlls/shell.dll16/version.rc similarity index 100% rename from dlls/shell32/version16.rc rename to dlls/shell.dll16/version.rc diff --git a/dlls/shell32/Makefile.in b/dlls/shell32/Makefile.in index d416eec..6900d31 100644 --- a/dlls/shell32/Makefile.in +++ b/dlls/shell32/Makefile.in @@ -64,22 +64,10 @@ SVG_SRCS = \ mydocs.svg \ trash_file.svg -C_SRCS16 = shell.c -RC_SRCS16 = version16.rc -SPEC_SRCS16 = shell.spec - EXTRA_OBJS = authors.o @MAKE_DLL_RULES@ -# Special rules for 16-bit resource files - -version16.res: version16.rc - $(LDPATH) $(RC16) $(RC16FLAGS) -fo$@ $(SRCDIR)/version16.rc - -shell.spec.o: shell.spec version16.res - $(WINEBUILD) $(WINEBUILDFLAGS) --dll -o $@ --main-module $(MODULE) --res version16.res --export $(SRCDIR)/shell.spec - authors.c: $(TOPSRCDIR)/AUTHORS (LC_ALL=C; export LC_ALL; echo 'const char * const SHELL_Authors[] = {' && \ sed -e '1,2d' -e 's/\(.*\)/ \"\1\",/' $(TOPSRCDIR)/AUTHORS && \ diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h index 973e526..eea2e18 100644 --- a/dlls/shell32/shell32_main.h +++ b/dlls/shell32/shell32_main.h @@ -35,7 +35,6 @@ #include "undocshell.h" #include "shlobj.h" #include "shellapi.h" -#include "wine/windef16.h" #include "wine/unicode.h" /******************************************* @@ -153,20 +152,6 @@ void FreeChangeNotifications(void); BOOL SHELL_ConfirmYesNoW(HWND hWnd, int nKindOfDialog, LPCWSTR szDir); -/* 16-bit functions */ -void WINAPI DragAcceptFiles16(HWND16 hWnd, BOOL16 b); -UINT16 WINAPI DragQueryFile16(HDROP16 hDrop, WORD wFile, LPSTR lpszFile, WORD wLength); -void WINAPI DragFinish16(HDROP16 h); -BOOL16 WINAPI DragQueryPoint16(HDROP16 hDrop, POINT16 *p); -HINSTANCE16 WINAPI ShellExecute16(HWND16,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT16); -HICON16 WINAPI ExtractIcon16(HINSTANCE16,LPCSTR,UINT16); -HICON16 WINAPI ExtractAssociatedIcon16(HINSTANCE16,LPSTR,LPWORD); -HICON16 WINAPI ExtractIconEx16 ( LPCSTR, INT16, HICON16 *, HICON16 *, UINT16 ); -HINSTANCE16 WINAPI FindExecutable16(LPCSTR,LPCSTR,LPSTR); -HGLOBAL16 WINAPI InternalExtractIcon16(HINSTANCE16,LPCSTR,UINT16,WORD); -BOOL16 WINAPI ShellAbout16(HWND16,LPCSTR,LPCSTR,HICON16); -BOOL16 WINAPI AboutDlgProc16(HWND16,UINT16,WPARAM16,LPARAM); - static inline BOOL SHELL_OsIsUnicode(void) { /* if high-bit of version is 0, we are emulating NT */ @@ -205,12 +190,6 @@ static inline WCHAR * __SHCloneStrAtoW(WCHAR ** target, const char * source) return *target; } -/* handle conversions */ -#define HICON_16(h32) (LOWORD(h32)) -#define HICON_32(h16) ((HICON)(ULONG_PTR)(h16)) -#define HINSTANCE_32(h16) ((HINSTANCE)(ULONG_PTR)(h16)) -#define HINSTANCE_16(h32) (LOWORD(h32)) - typedef UINT_PTR (*SHELL_ExecuteW32)(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, const SHELLEXECUTEINFOW *sei, LPSHELLEXECUTEINFOW sei_out); diff --git a/dlls/shell32/shellreg.c b/dlls/shell32/shellreg.c index fe87e96..37f3d9e 100644 --- a/dlls/shell32/shellreg.c +++ b/dlls/shell32/shellreg.c @@ -33,7 +33,6 @@ #include "winreg.h" #include "undocshell.h" -#include "wine/winbase16.h" #include "wine/debug.h" diff --git a/dlls/shell32/shlexec.c b/dlls/shell32/shlexec.c index 3be5962..201791f 100644 --- a/dlls/shell32/shlexec.c +++ b/dlls/shell32/shlexec.c @@ -42,7 +42,6 @@ #include "shlwapi.h" #include "ddeml.h" -#include "wine/winbase16.h" #include "shell32_main.h" #include "pidl.h" #include "shresdef.h"
1
0
0
0
Alexandre Julliard : shell32: Add implementation of WOWShellExecute.
by Alexandre Julliard
02 Apr '09
02 Apr '09
Module: wine Branch: master Commit: b1d96f6ffade16017a751f806b0c4345093458f9 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=b1d96f6ffade16017a751f806…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 1 18:19:42 2009 +0200 shell32: Add implementation of WOWShellExecute. The callback is probably not fully compatible, but apps are not supposed to use that function anyway. --- dlls/shell32/shell.c | 32 +++++--------------------------- dlls/shell32/shell32.spec | 2 +- dlls/shell32/shlexec.c | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 28 deletions(-) diff --git a/dlls/shell32/shell.c b/dlls/shell32/shell.c index 67bdc01..db49c29 100644 --- a/dlls/shell32/shell.c +++ b/dlls/shell32/shell.c @@ -48,6 +48,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell); +extern HINSTANCE WINAPI WOWShellExecute(HWND hWnd, LPCSTR lpOperation,LPCSTR lpFile, + LPCSTR lpParameters,LPCSTR lpDirectory, + INT iShowCmd, void *callback); typedef struct { /* structure for dropped files */ WORD wSize; @@ -600,31 +603,6 @@ HINSTANCE16 WINAPI ShellExecute16( HWND16 hWnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT16 iShowCmd ) { - SHELLEXECUTEINFOW seiW; - WCHAR *wVerb = NULL, *wFile = NULL, *wParameters = NULL, *wDirectory = NULL; - HANDLE hProcess = 0; - - seiW.lpVerb = lpOperation ? __SHCloneStrAtoW(&wVerb, lpOperation) : NULL; - seiW.lpFile = lpFile ? __SHCloneStrAtoW(&wFile, lpFile) : NULL; - seiW.lpParameters = lpParameters ? __SHCloneStrAtoW(&wParameters, lpParameters) : NULL; - seiW.lpDirectory = lpDirectory ? __SHCloneStrAtoW(&wDirectory, lpDirectory) : NULL; - - seiW.cbSize = sizeof(seiW); - seiW.fMask = 0; - seiW.hwnd = HWND_32(hWnd); - seiW.nShow = iShowCmd; - seiW.lpIDList = 0; - seiW.lpClass = 0; - seiW.hkeyClass = 0; - seiW.dwHotKey = 0; - seiW.hProcess = hProcess; - - SHELL_execute( &seiW, SHELL_Execute16 ); - - SHFree(wVerb); - SHFree(wFile); - SHFree(wParameters); - SHFree(wDirectory); - - return HINSTANCE_16(seiW.hInstApp); + return HINSTANCE_16( WOWShellExecute( HWND_32(hWnd), lpOperation, lpFile, lpParameters, + lpDirectory, iShowCmd, SHELL_Execute16 )); } diff --git a/dlls/shell32/shell32.spec b/dlls/shell32/shell32.spec index b64d8ef..5713c49 100644 --- a/dlls/shell32/shell32.spec +++ b/dlls/shell32/shell32.spec @@ -438,4 +438,4 @@ @ stdcall StrStrIA(str str) shlwapi.StrStrIA @ stdcall StrStrIW(wstr wstr) shlwapi.StrStrIW @ stdcall StrStrW(wstr wstr) shlwapi.StrStrW -@ stub WOWShellExecute +@ stdcall WOWShellExecute(long str str str str long ptr) diff --git a/dlls/shell32/shlexec.c b/dlls/shell32/shlexec.c index 67815ca..3be5962 100644 --- a/dlls/shell32/shlexec.c +++ b/dlls/shell32/shlexec.c @@ -1956,6 +1956,42 @@ HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, } /************************************************************************* + * WOWShellExecute [SHELL32.@] + * + * FIXME: the callback function most likely doesn't work the same way on Windows. + */ +HINSTANCE WINAPI WOWShellExecute(HWND hWnd, LPCSTR lpOperation,LPCSTR lpFile, + LPCSTR lpParameters,LPCSTR lpDirectory, INT iShowCmd, void *callback) +{ + SHELLEXECUTEINFOW seiW; + WCHAR *wVerb = NULL, *wFile = NULL, *wParameters = NULL, *wDirectory = NULL; + HANDLE hProcess = 0; + + seiW.lpVerb = lpOperation ? __SHCloneStrAtoW(&wVerb, lpOperation) : NULL; + seiW.lpFile = lpFile ? __SHCloneStrAtoW(&wFile, lpFile) : NULL; + seiW.lpParameters = lpParameters ? __SHCloneStrAtoW(&wParameters, lpParameters) : NULL; + seiW.lpDirectory = lpDirectory ? __SHCloneStrAtoW(&wDirectory, lpDirectory) : NULL; + + seiW.cbSize = sizeof(seiW); + seiW.fMask = 0; + seiW.hwnd = hWnd; + seiW.nShow = iShowCmd; + seiW.lpIDList = 0; + seiW.lpClass = 0; + seiW.hkeyClass = 0; + seiW.dwHotKey = 0; + seiW.hProcess = hProcess; + + SHELL_execute( &seiW, callback ); + + SHFree(wVerb); + SHFree(wFile); + SHFree(wParameters); + SHFree(wDirectory); + return seiW.hInstApp; +} + +/************************************************************************* * OpenAs_RunDLLA [SHELL32.@] */ void WINAPI OpenAs_RunDLLA(HWND hwnd, HINSTANCE hinst, LPCSTR cmdline, int cmdshow)
1
0
0
0
Alexandre Julliard : winecrt0: Disable the delay import destructor on Mac OS, it cannot be made to work.
by Alexandre Julliard
02 Apr '09
02 Apr '09
Module: wine Branch: master Commit: b2d35c3620be73ca662e73fed49a280b405d1f1c URL:
http://source.winehq.org/git/wine.git/?a=commit;h=b2d35c3620be73ca662e73fed…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 1 18:13:42 2009 +0200 winecrt0: Disable the delay import destructor on Mac OS, it cannot be made to work. --- dlls/winecrt0/delay_load.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/dlls/winecrt0/delay_load.c b/dlls/winecrt0/delay_load.c index 5926770..ac257ba 100644 --- a/dlls/winecrt0/delay_load.c +++ b/dlls/winecrt0/delay_load.c @@ -52,7 +52,7 @@ FARPROC WINAPI DECLSPEC_HIDDEN __wine_spec_delay_load( unsigned int id ) return proc; } -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(__APPLE__) /* we can't support destructors properly on Mac OS */ static void free_delay_imports(void) __attribute__((destructor)); static void free_delay_imports(void) {
1
0
0
0
Nikolay Sivov : comctl32: listview: Some tests showed delayed header creation in ListView control.
by Alexandre Julliard
01 Apr '09
01 Apr '09
Module: wine Branch: master Commit: 276c7a3bc6c451b892355126c983f686af2b4af0 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=276c7a3bc6c451b892355126c…
Author: Nikolay Sivov <bunglehead(a)gmail.com> Date: Mon Mar 30 14:59:10 2009 -0400 comctl32: listview: Some tests showed delayed header creation in ListView control. --- dlls/comctl32/tests/listview.c | 85 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 85 insertions(+), 0 deletions(-) diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c index 813d9bb..f7b34af 100644 --- a/dlls/comctl32/tests/listview.c +++ b/dlls/comctl32/tests/listview.c @@ -764,6 +764,9 @@ static void test_create(void) { HWND hList; HWND hHeader; + LONG_PTR ret; + LONG r; + LVCOLUMNA col; WNDCLASSEX cls; cls.cbSize = sizeof(WNDCLASSEX); ok(GetClassInfoEx(GetModuleHandle(NULL), "SysListView32", &cls), "GetClassInfoEx failed\n"); @@ -777,6 +780,88 @@ static void test_create(void) ok((HIMAGELIST)SendMessage(hList, LVM_GETIMAGELIST, 0, 0) == test_create_imagelist, "Image list not obtained\n"); hHeader = (HWND)SendMessage(hList, LVM_GETHEADER, 0, 0); ok(IsWindow(hHeader) && IsWindowVisible(hHeader), "Listview not in report mode\n"); + ok(hHeader == GetDlgItem(hList, 0), "Expected header as dialog item\n"); + DestroyWindow(hList); + + /* header isn't created on LVS_ICON and LVS_LIST styles */ + hList = CreateWindow("SysListView32", "Test", WS_VISIBLE, 0, 0, 100, 100, NULL, NULL, + GetModuleHandle(NULL), 0); + hHeader = (HWND)SendMessage(hList, LVM_GETHEADER, 0, 0); + todo_wine ok(!IsWindow(hHeader), "Header shouldn't be created\n"); + todo_wine ok(NULL == GetDlgItem(hList, 0), "NULL dialog item expected\n"); + /* insert column */ + memset(&col, 0, sizeof(LVCOLUMNA)); + col.mask = LVCF_WIDTH; + col.cx = 100; + r = SendMessage(hList, LVM_INSERTCOLUMN, 0, (LPARAM)&col); + ok(r == 0, "Expected 0 column's inserted\n"); + hHeader = (HWND)SendMessage(hList, LVM_GETHEADER, 0, 0); + ok(IsWindow(hHeader), "Header should be created\n"); + ok(hHeader == GetDlgItem(hList, 0), "Expected header as dialog item\n"); + DestroyWindow(hList); + + hList = CreateWindow("SysListView32", "Test", WS_VISIBLE|LVS_LIST, 0, 0, 100, 100, NULL, NULL, + GetModuleHandle(NULL), 0); + hHeader = (HWND)SendMessage(hList, LVM_GETHEADER, 0, 0); + todo_wine ok(!IsWindow(hHeader), "Header shouldn't be created\n"); + todo_wine ok(NULL == GetDlgItem(hList, 0), "NULL dialog item expected\n"); + /* insert column */ + memset(&col, 0, sizeof(LVCOLUMNA)); + col.mask = LVCF_WIDTH; + col.cx = 100; + r = SendMessage(hList, LVM_INSERTCOLUMN, 0, (LPARAM)&col); + ok(r == 0, "Expected 0 column's inserted\n"); + hHeader = (HWND)SendMessage(hList, LVM_GETHEADER, 0, 0); + ok(IsWindow(hHeader), "Header should be created\n"); + ok(hHeader == GetDlgItem(hList, 0), "Expected header as dialog item\n"); + DestroyWindow(hList); + + /* try to switch LVS_ICON -> LVS_REPORT and back LVS_ICON -> LVS_REPORT */ + hList = CreateWindow("SysListView32", "Test", WS_VISIBLE, 0, 0, 100, 100, NULL, NULL, + GetModuleHandle(NULL), 0); + ret = SetWindowLongPtr(hList, GWL_STYLE, GetWindowLongPtr(hList, GWL_STYLE) | LVS_REPORT); + ok(ret = WS_VISIBLE, "Style wrong, should be WS_VISIBLE|LVS_ICON\n"); + hHeader = (HWND)SendMessage(hList, LVM_GETHEADER, 0, 0); + ok(IsWindow(hHeader), "Header should be created\n"); + ret = SetWindowLongPtr(hList, GWL_STYLE, GetWindowLong(hList, GWL_STYLE) & ~LVS_REPORT); + ok(ret = WS_VISIBLE|LVS_REPORT, "Style wrong, should be WS_VISIBLE|LVS_REPORT\n"); + hHeader = (HWND)SendMessage(hList, LVM_GETHEADER, 0, 0); + ok(IsWindow(hHeader), "Header should be created\n"); + ok(hHeader == GetDlgItem(hList, 0), "Expected header as dialog item\n"); + DestroyWindow(hList); + + /* try to switch LVS_LIST -> LVS_REPORT and back LVS_LIST -> LVS_REPORT */ + hList = CreateWindow("SysListView32", "Test", WS_VISIBLE|LVS_LIST, 0, 0, 100, 100, NULL, NULL, + GetModuleHandle(NULL), 0); + ret = SetWindowLongPtr(hList, GWL_STYLE, + (GetWindowLongPtr(hList, GWL_STYLE) & ~LVS_LIST) | LVS_REPORT); + ok(ret = WS_VISIBLE|LVS_LIST, "Style wrong, should be WS_VISIBLE|LVS_ICON\n"); + hHeader = (HWND)SendMessage(hList, LVM_GETHEADER, 0, 0); + ok(IsWindow(hHeader), "Header shouldn't be created\n"); + ok(hHeader == GetDlgItem(hList, 0), "NULL dialog item expected\n"); + ret = SetWindowLongPtr(hList, GWL_STYLE, + (GetWindowLongPtr(hList, GWL_STYLE) & ~LVS_REPORT) | LVS_LIST); + ok(ret = WS_VISIBLE|LVS_REPORT, "Style wrong, should be WS_VISIBLE|LVS_REPORT\n"); + hHeader = (HWND)SendMessage(hList, LVM_GETHEADER, 0, 0); + ok(IsWindow(hHeader), "Header shouldn't be created\n"); + ok(hHeader == GetDlgItem(hList, 0), "NULL dialog item expected\n"); + DestroyWindow(hList); + + /* LVS_REPORT without WS_VISIBLE */ + hList = CreateWindow("SysListView32", "Test", LVS_REPORT, 0, 0, 100, 100, NULL, NULL, + GetModuleHandle(NULL), 0); + hHeader = (HWND)SendMessage(hList, LVM_GETHEADER, 0, 0); + todo_wine ok(!IsWindow(hHeader), "Header shouldn't be created\n"); + todo_wine ok(NULL == GetDlgItem(hList, 0), "NULL dialog item expected\n"); + /* insert column */ + memset(&col, 0, sizeof(LVCOLUMNA)); + col.mask = LVCF_WIDTH; + col.cx = 100; + r = SendMessage(hList, LVM_INSERTCOLUMN, 0, (LPARAM)&col); + ok(r == 0, "Expected 0 column's inserted\n"); + hHeader = (HWND)SendMessage(hList, LVM_GETHEADER, 0, 0); + ok(IsWindow(hHeader), "Header should be created\n"); + ok(hHeader == GetDlgItem(hList, 0), "Expected header as dialog item\n"); DestroyWindow(hList); }
1
0
0
0
Huw Davies : ole32: Change the global memory duplicator to return HRESULT.
by Alexandre Julliard
01 Apr '09
01 Apr '09
Module: wine Branch: master Commit: 628332aee11cd82eb4b24ff4def7d7b55be691af URL:
http://source.winehq.org/git/wine.git/?a=commit;h=628332aee11cd82eb4b24ff4d…
Author: Huw Davies <huw(a)codeweavers.com> Date: Wed Apr 1 14:03:27 2009 +0100 ole32: Change the global memory duplicator to return HRESULT. --- dlls/ole32/clipboard.c | 54 ++++++++++++++++++----------------------------- 1 files changed, 21 insertions(+), 33 deletions(-) diff --git a/dlls/ole32/clipboard.c b/dlls/ole32/clipboard.c index 1517d20..3926537 100644 --- a/dlls/ole32/clipboard.c +++ b/dlls/ole32/clipboard.c @@ -387,41 +387,32 @@ static HRESULT enum_fmtetc_construct(ole_priv_data *data, UINT pos, IEnumFORMATE } /*********************************************************************** - * OLEClipbrd_GlobalDupMem( HGLOBAL ) + * dup_global_mem + * * Helper method to duplicate an HGLOBAL chunk of memory */ -static HGLOBAL OLEClipbrd_GlobalDupMem( HGLOBAL hGlobalSrc ) +static HRESULT dup_global_mem( HGLOBAL src, HGLOBAL *dst ) { - HGLOBAL hGlobalDest; - PVOID pGlobalSrc, pGlobalDest; - DWORD cBytes; + void *src_ptr, *dst_ptr; + DWORD size; - if ( !hGlobalSrc ) - return 0; + *dst = NULL; + if ( !src ) return S_FALSE; - cBytes = GlobalSize(hGlobalSrc); - if ( 0 == cBytes ) - return 0; + size = GlobalSize(src); - hGlobalDest = GlobalAlloc( GMEM_DDESHARE|GMEM_MOVEABLE, - cBytes ); - if ( !hGlobalDest ) - return 0; + *dst = GlobalAlloc( GMEM_DDESHARE|GMEM_MOVEABLE, size ); + if ( !*dst ) return E_OUTOFMEMORY; - pGlobalSrc = GlobalLock(hGlobalSrc); - pGlobalDest = GlobalLock(hGlobalDest); - if ( !pGlobalSrc || !pGlobalDest ) - { - GlobalFree(hGlobalDest); - return 0; - } + src_ptr = GlobalLock(src); + dst_ptr = GlobalLock(*dst); - memcpy(pGlobalDest, pGlobalSrc, cBytes); + memcpy(dst_ptr, src_ptr, size); - GlobalUnlock(hGlobalSrc); - GlobalUnlock(hGlobalDest); + GlobalUnlock(*dst); + GlobalUnlock(src); - return hGlobalDest; + return S_OK; } /************************************************************ @@ -548,7 +539,7 @@ static HRESULT render_embed_source_hack(IDataObject *data, LPFORMATETC fmt) static HRESULT render_format(IDataObject *data, LPFORMATETC fmt) { STGMEDIUM std; - HGLOBAL hDup; + HGLOBAL clip_data = NULL; HRESULT hr; /* Embed source hack */ @@ -570,16 +561,13 @@ static HRESULT render_format(IDataObject *data, LPFORMATETC fmt) goto end; } - if ( !(hDup = OLEClipbrd_GlobalDupMem(std.u.hGlobal)) ) - { - hr = E_OUTOFMEMORY; - goto end; - } + hr = dup_global_mem(std.u.hGlobal, &clip_data); + if(FAILED(hr)) goto end; - if ( !SetClipboardData( fmt->cfFormat, hDup ) ) + if ( !SetClipboardData( fmt->cfFormat, clip_data ) ) { WARN("() : Failed to set rendered clipboard data into clipboard!\n"); - GlobalFree(hDup); + GlobalFree(clip_data); hr = CLIPBRD_E_CANT_SET; }
1
0
0
0
Huw Davies : ole32: Rename a few variables and remove a couple of meaningless comments.
by Alexandre Julliard
01 Apr '09
01 Apr '09
Module: wine Branch: master Commit: 3cb4ab588d865cd3e8b10d110866a9155928980c URL:
http://source.winehq.org/git/wine.git/?a=commit;h=3cb4ab588d865cd3e8b10d110…
Author: Huw Davies <huw(a)codeweavers.com> Date: Tue Mar 31 17:02:32 2009 +0100 ole32: Rename a few variables and remove a couple of meaningless comments. --- dlls/ole32/clipboard.c | 25 ++++++++++--------------- 1 files changed, 10 insertions(+), 15 deletions(-) diff --git a/dlls/ole32/clipboard.c b/dlls/ole32/clipboard.c index f01adbd..1517d20 100644 --- a/dlls/ole32/clipboard.c +++ b/dlls/ole32/clipboard.c @@ -539,31 +539,30 @@ static HRESULT render_embed_source_hack(IDataObject *data, LPFORMATETC fmt) } /*********************************************************************** - * OLEClipbrd_RenderFormat(LPFORMATETC) + * render_format + * * Render the clipboard data. Note that this call will delegate to the * source data object. * Note: This function assumes it is passed an HGLOBAL format to render. */ -static HRESULT OLEClipbrd_RenderFormat(IDataObject *pIDataObject, LPFORMATETC pFormatetc) +static HRESULT render_format(IDataObject *data, LPFORMATETC fmt) { STGMEDIUM std; HGLOBAL hDup; HRESULT hr; /* Embed source hack */ - if(pFormatetc->cfFormat == embed_source_clipboard_format) + if(fmt->cfFormat == embed_source_clipboard_format) { - return render_embed_source_hack(pIDataObject, pFormatetc); + return render_embed_source_hack(data, fmt); } - if (FAILED(hr = IDataObject_GetData(pIDataObject, pFormatetc, &std))) + if (FAILED(hr = IDataObject_GetData(data, fmt, &std))) { WARN("() : IDataObject_GetData failed to render clipboard data! (%x)\n", hr); return hr; } - /* To put a copy back on the clipboard */ - if(std.tymed != TYMED_HGLOBAL) { FIXME("got tymed %x\n", std.tymed); @@ -571,17 +570,13 @@ static HRESULT OLEClipbrd_RenderFormat(IDataObject *pIDataObject, LPFORMATETC pF goto end; } - /* - * Put a copy of the rendered data back on the clipboard - */ - if ( !(hDup = OLEClipbrd_GlobalDupMem(std.u.hGlobal)) ) { hr = E_OUTOFMEMORY; goto end; } - if ( !SetClipboardData( pFormatetc->cfFormat, hDup ) ) + if ( !SetClipboardData( fmt->cfFormat, hDup ) ) { WARN("() : Failed to set rendered clipboard data into clipboard!\n"); GlobalFree(hDup); @@ -638,7 +633,7 @@ static LRESULT CALLBACK OLEClipbrd_WndProc * Render the clipboard data. * (We must have a source data object or we wouldn't be in this WndProc) */ - OLEClipbrd_RenderFormat( (IDataObject*)&(theOleClipboard->lpvtbl), &rgelt ); + render_format( (IDataObject*)&(theOleClipboard->lpvtbl), &rgelt ); break; } @@ -678,7 +673,7 @@ static LRESULT CALLBACK OLEClipbrd_WndProc /* * Render the clipboard data. */ - if ( FAILED(OLEClipbrd_RenderFormat( (IDataObject*)&(theOleClipboard->lpvtbl), &rgelt )) ) + if ( FAILED(render_format( (IDataObject*)&(theOleClipboard->lpvtbl), &rgelt )) ) continue; TRACE("(): WM_RENDERALLFORMATS(cfFormat=%d)\n", rgelt.cfFormat); @@ -1512,7 +1507,7 @@ HRESULT WINAPI OleFlushClipboard(void) GetClipboardFormatNameA(rgelt.cfFormat, szFmtName, sizeof(szFmtName)-1) ? szFmtName : ""); - if ( FAILED(OLEClipbrd_RenderFormat( theOleClipboard->pIDataObjectSrc, &rgelt )) ) + if ( FAILED(render_format( theOleClipboard->pIDataObjectSrc, &rgelt )) ) continue; } }
1
0
0
0
Huw Davies : ole32: Move the embed source hack to a separate function.
by Alexandre Julliard
01 Apr '09
01 Apr '09
Module: wine Branch: master Commit: f2ba37e5b95a5a6d02ad13d1c9d344a49c9a5b63 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=f2ba37e5b95a5a6d02ad13d1c…
Author: Huw Davies <huw(a)codeweavers.com> Date: Tue Mar 31 16:58:57 2009 +0100 ole32: Move the embed source hack to a separate function. --- dlls/ole32/clipboard.c | 221 +++++++++++++++++++++++++++--------------------- 1 files changed, 124 insertions(+), 97 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=f2ba37e5b95a5a6d02ad1…
1
0
0
0
Huw Davies : ole32/tests: Set tymed in GetData and AddRef the interfaces ( ReleaseStgMedium releases them even if pUnkForRelease is non-NULL).
by Alexandre Julliard
01 Apr '09
01 Apr '09
Module: wine Branch: master Commit: 126ec0181f0f2c4232317562a5eae5b7c401f3c4 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=126ec0181f0f2c4232317562a…
Author: Huw Davies <huw(a)codeweavers.com> Date: Tue Mar 31 14:41:11 2009 +0100 ole32/tests: Set tymed in GetData and AddRef the interfaces (ReleaseStgMedium releases them even if pUnkForRelease is non-NULL). --- dlls/ole32/tests/clipboard.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/dlls/ole32/tests/clipboard.c b/dlls/ole32/tests/clipboard.c index 1918b2c..88b3ba6 100644 --- a/dlls/ole32/tests/clipboard.c +++ b/dlls/ole32/tests/clipboard.c @@ -245,11 +245,22 @@ static HRESULT WINAPI DataObjectImpl_GetData(IDataObject* iface, FORMATETC *pfor IUnknown_AddRef(pmedium->pUnkForRelease); if(pformatetc->cfFormat == CF_TEXT || pformatetc->cfFormat == cf_global) + { + pmedium->tymed = TYMED_HGLOBAL; U(*pmedium).hGlobal = This->text; + } else if(pformatetc->cfFormat == cf_stream) + { + pmedium->tymed = TYMED_ISTREAM; + IStream_AddRef(This->stm); U(*pmedium).pstm = This->stm; + } else if(pformatetc->cfFormat == cf_storage) + { + pmedium->tymed = TYMED_ISTORAGE; + IStorage_AddRef(This->stg); U(*pmedium).pstg = This->stg; + } return S_OK; } }
1
0
0
0
← Newer
1
...
62
63
64
65
66
67
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Results per page:
10
25
50
100
200