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
July
June
May
April
March
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
October 2015
----- 2025 -----
July 2025
June 2025
May 2025
April 2025
March 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
749 discussions
Start a n
N
ew thread
Michael Stefaniuc : d3d9/tests: Test the return value of CreateDepthStencilSurface().
by Alexandre Julliard
22 Oct '15
22 Oct '15
Module: wine Branch: master Commit: 4fb840b614691a787c76659f02c163d922f88fba URL:
http://source.winehq.org/git/wine.git/?a=commit;h=4fb840b614691a787c76659f0…
Author: Michael Stefaniuc <mstefani(a)redhat.de> Date: Wed Oct 21 15:38:06 2015 +0200 d3d9/tests: Test the return value of CreateDepthStencilSurface(). Signed-off-by: Michael Stefaniuc <mstefani(a)redhat.de> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/d3d9/tests/visual.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c index f110905..be276ee 100644 --- a/dlls/d3d9/tests/visual.c +++ b/dlls/d3d9/tests/visual.c @@ -16219,6 +16219,7 @@ static void resz_test(void) IDirect3DSurface9_Release(ds); hr = IDirect3DDevice9_CreateDepthStencilSurface(device, 640, 480, D3DFMT_D24S8, D3DMULTISAMPLE_NONE, 0, TRUE, &ds, NULL); + ok(SUCCEEDED(hr), "Failed to create depth stencil surface, hr %#x.\n", hr); hr = IDirect3DDevice9_SetRenderTarget(device, 0, readback); ok(SUCCEEDED(hr), "Failed to set render target, hr %#x.\n", hr); @@ -19777,6 +19778,7 @@ static void test_depthbias(void) hr = IDirect3DDevice9_CreateDepthStencilSurface(device, 640, 480, formats[i], D3DMULTISAMPLE_NONE, 0, FALSE, &ds, NULL); + ok(SUCCEEDED(hr), "Failed to create depth stencil surface, hr %#x.\n", hr); hr = IDirect3DDevice9_SetDepthStencilSurface(device, ds); ok(SUCCEEDED(hr), "Failed to set depth stencil surface, hr %#x.\n", hr); hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0x00000000, 0.5f, 0);
1
0
0
0
Bruno Jesus : msvfw32/tests: Check if requesting the default codec works.
by Alexandre Julliard
22 Oct '15
22 Oct '15
Module: wine Branch: master Commit: acd79650fe93a54413e1e994c3ec5faab263cbdd URL:
http://source.winehq.org/git/wine.git/?a=commit;h=acd79650fe93a54413e1e994c…
Author: Bruno Jesus <00cpxxx(a)gmail.com> Date: Thu Oct 22 20:15:45 2015 +0800 msvfw32/tests: Check if requesting the default codec works. Signed-off-by: Bruno Jesus <00cpxxx(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msvfw32/tests/msvfw.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/dlls/msvfw32/tests/msvfw.c b/dlls/msvfw32/tests/msvfw.c index 0b18e47..a9c4053 100644 --- a/dlls/msvfw32/tests/msvfw.c +++ b/dlls/msvfw32/tests/msvfw.c @@ -28,6 +28,29 @@ static void test_OpenCase(void) { HIC h; + ICINFO info; + /* Check if default handler works */ + h = ICOpen(mmioFOURCC('v','i','d','c'),0,ICMODE_DECOMPRESS); +todo_wine + ok(0!=h,"ICOpen(vidc.0) failed\n"); + if (h) { + info.dwSize = sizeof(info); + info.szName[0] = 0; + ICGetInfo(h, &info, sizeof(info)); + trace("The default decompressor is %s\n", wine_dbgstr_w(info.szName)); + ok(ICClose(h)==ICERR_OK,"ICClose failed\n"); + } + h = ICOpen(mmioFOURCC('v','i','d','c'),0,ICMODE_COMPRESS); +todo_wine + ok(0!=h || broken(h == 0),"ICOpen(vidc.0) failed\n"); /* Not present in Win8 */ + if (h) { + info.dwSize = sizeof(info); + info.szName[0] = 0; + ICGetInfo(h, &info, sizeof(info)); + trace("The default compressor is %s\n", wine_dbgstr_w(info.szName)); + ok(ICClose(h)==ICERR_OK,"ICClose failed\n"); + } + /* Open a compressor with combinations of lowercase * and uppercase compressortype and handler. */
1
0
0
0
Bruno Jesus : msvidc32: Add missing compression messages to the list.
by Alexandre Julliard
22 Oct '15
22 Oct '15
Module: wine Branch: master Commit: 665f308fd97264f4373f0754a10fc8338c4052fe URL:
http://source.winehq.org/git/wine.git/?a=commit;h=665f308fd97264f4373f0754a…
Author: Bruno Jesus <00cpxxx(a)gmail.com> Date: Thu Oct 22 18:46:13 2015 +0800 msvidc32: Add missing compression messages to the list. Signed-off-by: Bruno Jesus <00cpxxx(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msvidc32/msvideo1.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/dlls/msvidc32/msvideo1.c b/dlls/msvidc32/msvideo1.c index 61baa9e..b3faaf6 100644 --- a/dlls/msvidc32/msvideo1.c +++ b/dlls/msvidc32/msvideo1.c @@ -558,12 +558,15 @@ LRESULT WINAPI CRAM_DriverProc( DWORD_PTR dwDriverId, HDRVR hdrvr, UINT msg, break; case ICM_COMPRESS_QUERY: - FIXME("compression not implemented\n"); r = ICERR_BADFORMAT; + /* fall through */ + case ICM_COMPRESS_GET_FORMAT: + case ICM_COMPRESS_END: + case ICM_COMPRESS: + FIXME("compression not implemented\n"); break; case ICM_CONFIGURE: - r = ICERR_UNSUPPORTED; break; default:
1
0
0
0
Alexandre Julliard : makefiles: Only define the dummy target in makefiles that need it.
by Alexandre Julliard
22 Oct '15
22 Oct '15
Module: wine Branch: master Commit: 90d66cc874addb09b5acc321c64dd8c562807243 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=90d66cc874addb09b5acc321c…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Oct 22 21:36:15 2015 +0900 makefiles: Only define the dummy target in makefiles that need it. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- Make.vars.in | 3 +-- Makefile.in | 3 ++- libs/wine/Makefile.in | 4 +++- programs/winetest/Makefile.in | 3 +++ 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Make.vars.in b/Make.vars.in index e825f4b..e2de171 100644 --- a/Make.vars.in +++ b/Make.vars.in @@ -72,7 +72,6 @@ conf_manext = 5 @SET_MAKE@ all: -dummy: -.PHONY: all dummy +.PHONY: all # End of common header diff --git a/Makefile.in b/Makefile.in index b600cf7..9c5158d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -50,8 +50,9 @@ uninstall:: __uninstall__ # dependencies needed to build any dll or program __tooldeps__: libs/port libs/wine libs/wpp __builddeps__: __tooldeps__ include -.PHONY: depend check test testclean crosstest __tooldeps__ __builddeps__ +.PHONY: depend dummy check test testclean crosstest __tooldeps__ __builddeps__ +dummy: loader: libs/port libs/wine tools server: libs/port libs/wine tools include fonts: tools/sfnt2fon diff --git a/libs/wine/Makefile.in b/libs/wine/Makefile.in index c961ba5..bc5f6fe 100644 --- a/libs/wine/Makefile.in +++ b/libs/wine/Makefile.in @@ -107,8 +107,10 @@ config_EXTRADEFS = \ version.c: dummy version=`(GIT_DIR=$(top_srcdir)/.git git describe HEAD 2>/dev/null || echo "wine-@PACKAGE_VERSION@") | sed -n -e '$$s/\(.*\)/const char wine_build[] = "\1";/p'` && (echo $$version | cmp -s - $@) || echo $$version >$@ || ($(RM) $@ && exit 1) +dummy: + # Make sure that make_makefiles sees the generated rules -.PHONY: install install-lib install-dev uninstall +.PHONY: dummy install install-lib install-dev uninstall install install-lib:: install install-dev:: clean:: diff --git a/programs/winetest/Makefile.in b/programs/winetest/Makefile.in index 1c25e25..7bdfe2a 100644 --- a/programs/winetest/Makefile.in +++ b/programs/winetest/Makefile.in @@ -26,3 +26,6 @@ build.nfo: build.res: build.rc build.nfo $(WRC) -o $@ build.rc + +dummy: +.PHONY: dummy
1
0
0
0
Alexandre Julliard : configure: Follow the variable naming convention for libpcap.
by Alexandre Julliard
22 Oct '15
22 Oct '15
Module: wine Branch: master Commit: ded44ed947bc8765abecb796e41dc4a2cd24e0b7 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=ded44ed947bc8765abecb796e…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Oct 22 19:33:27 2015 +0900 configure: Follow the variable naming convention for libpcap. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- configure | 5 +++-- configure.ac | 2 +- dlls/wpcap/Makefile.in | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/configure b/configure index f21a860..83b7c32 100755 --- a/configure +++ b/configure @@ -677,7 +677,7 @@ XSLT_LIBS XSLT_CFLAGS XML2_LIBS XML2_CFLAGS -LIBPCAP +PCAP_LIBS X_EXTRA_LIBS X_LIBS X_PRE_LIBS @@ -10941,7 +10941,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pcap_pcap_create" >&5 $as_echo "$ac_cv_lib_pcap_pcap_create" >&6; } if test "x$ac_cv_lib_pcap_pcap_create" = xyes; then : - LIBPCAP="-lpcap" + PCAP_LIBS="-lpcap" fi @@ -17127,6 +17127,7 @@ X_CFLAGS = $X_CFLAGS X_PRE_LIBS = $X_PRE_LIBS X_LIBS = $X_LIBS X_EXTRA_LIBS = $X_EXTRA_LIBS +PCAP_LIBS = $PCAP_LIBS XML2_CFLAGS = $XML2_CFLAGS XML2_LIBS = $XML2_LIBS XSLT_CFLAGS = $XSLT_CFLAGS diff --git a/configure.ac b/configure.ac index a209fa1..a494266 100644 --- a/configure.ac +++ b/configure.ac @@ -1289,7 +1289,7 @@ test "x$ac_cv_lib_OpenCL_clGetPlatformInfo" != xyes && enable_opencl=${enable_op dnl **** Check for libpcap **** if test "$ac_cv_header_pcap_pcap_h" = "yes" then - AC_CHECK_LIB(pcap,pcap_create,[AC_SUBST(LIBPCAP,["-lpcap"])]) + AC_CHECK_LIB(pcap,pcap_create,[AC_SUBST(PCAP_LIBS,["-lpcap"])]) fi WINE_NOTICE_WITH(pcap,[test "x$ac_cv_lib_pcap_pcap_create" != xyes], [pcap ${notice_platform}development files not found, wpcap won't be supported.]) diff --git a/dlls/wpcap/Makefile.in b/dlls/wpcap/Makefile.in index e44613f..91b4a95 100644 --- a/dlls/wpcap/Makefile.in +++ b/dlls/wpcap/Makefile.in @@ -1,6 +1,6 @@ MODULE = wpcap.dll DELAYIMPORTS = ws2_32 -EXTRALIBS = @LIBPCAP@ +EXTRALIBS = $(PCAP_LIBS) C_SRCS = \ wpcap.c
1
0
0
0
Bruno Jesus : msvfw32: Better tracing of ICERR codes and general trace improvements.
by Alexandre Julliard
22 Oct '15
22 Oct '15
Module: wine Branch: master Commit: 060db73ab67517df7c021d5fb51787c757db55e0 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=060db73ab67517df7c021d5fb…
Author: Bruno Jesus <00cpxxx(a)gmail.com> Date: Thu Oct 22 14:10:29 2015 +0800 msvfw32: Better tracing of ICERR codes and general trace improvements. Signed-off-by: Bruno Jesus <00cpxxx(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msvfw32/msvideo_main.c | 123 +++++++++++++++++++++++++++----------------- 1 file changed, 77 insertions(+), 46 deletions(-) diff --git a/dlls/msvfw32/msvideo_main.c b/dlls/msvfw32/msvideo_main.c index 717bcf9..c48479d 100644 --- a/dlls/msvfw32/msvideo_main.c +++ b/dlls/msvfw32/msvideo_main.c @@ -46,16 +46,58 @@ WINE_DEFAULT_DEBUG_CHANNEL(msvideo); +/* This one is a macro in order to work for both ASCII and Unicode */ +#define fourcc_to_string(str, fcc) do { \ + (str)[0] = LOBYTE(LOWORD(fcc)); \ + (str)[1] = HIBYTE(LOWORD(fcc)); \ + (str)[2] = LOBYTE(HIWORD(fcc)); \ + (str)[3] = HIBYTE(HIWORD(fcc)); \ + } while(0) + static inline const char *wine_dbgstr_fcc( DWORD fcc ) { - char fcc_str[5] = {LOBYTE(LOWORD(fcc)), HIBYTE(LOWORD(fcc)), - LOBYTE(HIWORD(fcc)), HIBYTE(HIWORD(fcc)), '\0'}; - if (isalnum(fcc_str[0]) && isalnum(fcc_str[1]) - && isalnum(fcc_str[2]) && isalnum(fcc_str[3])) + char fcc_str[5]; + fourcc_to_string(fcc_str, fcc); + fcc_str[4] = '\0'; + /* Last byte may be ' ' in some cases like "DIB " */ + if (isalnum(fcc_str[0]) && isalnum(fcc_str[1]) && isalnum(fcc_str[2]) + && (isalnum(fcc_str[3]) || isspace(fcc_str[3]))) return wine_dbg_sprintf("%s", fcc_str); return wine_dbg_sprintf("0x%08x", fcc); } +static const char *wine_dbgstr_icerr( int ret ) +{ + const char *str; + if (ret <= ICERR_CUSTOM) + return wine_dbg_sprintf("ICERR_CUSTOM (%d)", ret); +#define XX(x) case (x): str = #x; break + switch (ret) + { + XX(ICERR_OK); + XX(ICERR_DONTDRAW); + XX(ICERR_NEWPALETTE); + XX(ICERR_GOTOKEYFRAME); + XX(ICERR_STOPDRAWING); + XX(ICERR_UNSUPPORTED); + XX(ICERR_BADFORMAT); + XX(ICERR_MEMORY); + XX(ICERR_INTERNAL); + XX(ICERR_BADFLAGS); + XX(ICERR_BADPARAM); + XX(ICERR_BADSIZE); + XX(ICERR_BADHANDLE); + XX(ICERR_CANTUPDATE); + XX(ICERR_ABORT); + XX(ICERR_ERROR); + XX(ICERR_BADBITDEPTH); + XX(ICERR_BADIMAGESIZE); + default: str = wine_dbg_sprintf("UNKNOWN (%d)", ret); + } +#undef XX + return str; +} + static WINE_HIC* MSVIDEO_FirstHic /* = NULL */; typedef struct _reg_driver reg_driver; @@ -70,14 +112,6 @@ struct _reg_driver static reg_driver* reg_driver_list = NULL; -/* This one is a macro in order to work for both ASCII and Unicode */ -#define fourcc_to_string(str, fcc) do { \ - (str)[0] = LOBYTE(LOWORD(fcc)); \ - (str)[1] = HIBYTE(LOWORD(fcc)); \ - (str)[2] = LOBYTE(HIWORD(fcc)); \ - (str)[3] = HIBYTE(HIWORD(fcc)); \ - } while(0) - HMODULE MSVFW32_hModule; BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved ) @@ -176,7 +210,7 @@ static LRESULT MSVIDEO_SendMessage(WINE_HIC* whic, UINT msg, DWORD_PTR lParam1, ret = SendDriverMessage(whic->hdrv, msg, lParam1, lParam2); } - TRACE(" -> 0x%08lx\n", ret); + TRACE(" -> %s\n", wine_dbgstr_icerr(ret)); return ret; } @@ -293,8 +327,8 @@ static BOOL ICInfo_enum_handler(const char *drv, unsigned int nr, void *param) */ BOOL VFWAPI ICInfo( DWORD fccType, DWORD fccHandler, ICINFO *lpicinfo) { - TRACE("(%s,%s/%08x,%p)\n", - wine_dbgstr_fcc(fccType), wine_dbgstr_fcc(fccHandler), fccHandler, lpicinfo); + TRACE("(%s,%s,%p)\n", + wine_dbgstr_fcc(fccType), wine_dbgstr_fcc(fccHandler), lpicinfo); lpicinfo->fccType = fccType; lpicinfo->fccHandler = fccHandler; @@ -420,16 +454,16 @@ HIC VFWAPI ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode) /* Well, lParam2 is in fact a LPVIDEO_OPEN_PARMS, but it has the * same layout as ICOPEN */ - icopen.dwSize = sizeof(ICOPEN); - icopen.fccType = fccType; - icopen.fccHandler = fccHandler; - icopen.dwVersion = 0x00001000; /* FIXME */ - icopen.dwFlags = wMode; - icopen.dwError = 0; - icopen.pV1Reserved = NULL; - icopen.pV2Reserved = NULL; - icopen.dnDevNode = 0; /* FIXME */ - + icopen.dwSize = sizeof(ICOPEN); + icopen.fccType = fccType; + icopen.fccHandler = fccHandler; + icopen.dwVersion = 0x00001000; /* FIXME */ + icopen.dwFlags = wMode; + icopen.dwError = 0; + icopen.pV1Reserved = NULL; + icopen.pV2Reserved = NULL; + icopen.dnDevNode = 0; /* FIXME */ + if (!driver) { /* normalize to lower case as in 'vidc' */ ((char*)&fccType)[0] = tolower(((char*)&fccType)[0]); @@ -438,9 +472,9 @@ HIC VFWAPI ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode) ((char*)&fccType)[3] = tolower(((char*)&fccType)[3]); icopen.fccType = fccType; /* Seek the driver in the registry */ - fourcc_to_string(codecname, fccType); + fourcc_to_string(codecname, fccType); codecname[4] = '.'; - fourcc_to_string(codecname + 5, fccHandler); + fourcc_to_string(codecname + 5, fccHandler); codecname[9] = '\0'; hdrv = OpenDriver(codecname, drv32W, (LPARAM)&icopen); @@ -483,15 +517,15 @@ HIC VFWAPI ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, DRIVERPRO TRACE("(%s,%s,%d,%p)\n", wine_dbgstr_fcc(fccType), wine_dbgstr_fcc(fccHandler), wMode, lpfnHandler); - icopen.dwSize = sizeof(ICOPEN); - icopen.fccType = fccType; - icopen.fccHandler = fccHandler; - icopen.dwVersion = ICVERSION; - icopen.dwFlags = wMode; - icopen.dwError = 0; - icopen.pV1Reserved = NULL; - icopen.pV2Reserved = NULL; - icopen.dnDevNode = 0; /* FIXME */ + icopen.dwSize = sizeof(ICOPEN); + icopen.fccType = fccType; + icopen.fccHandler = fccHandler; + icopen.dwVersion = ICVERSION; + icopen.dwFlags = wMode; + icopen.dwError = 0; + icopen.pV1Reserved = NULL; + icopen.pV2Reserved = NULL; + icopen.dnDevNode = 0; /* FIXME */ whic = HeapAlloc(GetProcessHeap(), 0, sizeof(WINE_HIC)); if (!whic) return 0; @@ -567,7 +601,7 @@ LRESULT VFWAPI ICGetInfo(HIC hic, ICINFO *picinfo, DWORD cb) lstrcpyW(picinfo->szDriver, ii.szDriver); } - TRACE(" -> 0x%08lx\n", ret); + TRACE(" -> %s\n", wine_dbgstr_icerr(ret)); return ret; } @@ -764,7 +798,7 @@ DWORD VFWAPIV ICDecompress(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiFormat, icd.ckid = 0; ret = ICSendMessage(hic,ICM_DECOMPRESS,(DWORD_PTR)&icd,sizeof(ICDECOMPRESS)); - TRACE("-> %d\n",ret); + TRACE("-> %s\n",wine_dbgstr_icerr(ret)); return ret; } @@ -1378,7 +1412,6 @@ LPVOID VFWAPI ICSeqCompressFrame(PCOMPVARS pc, UINT uiFlags, LPVOID lpBits, BOOL icComp->lpPrev = pc->lpBitsPrev; ret = ICSendMessage(pc->hic, ICM_COMPRESS, (DWORD_PTR)icComp, sizeof(*icComp)); - TRACE(" -- 0x%08x\n", ret); if (ret == ICERR_OK) { LPVOID oldprev, oldout; @@ -1426,10 +1459,8 @@ static void clear_compvars(PCOMPVARS pc) */ void VFWAPI ICSeqCompressFrameEnd(PCOMPVARS pc) { - DWORD ret; TRACE("(%p)\n", pc); - ret = ICSendMessage(pc->hic, ICM_COMPRESS_END, 0, 0); - TRACE(" -- %x\n", ret); + ICSendMessage(pc->hic, ICM_COMPRESS_END, 0, 0); clear_compvars(pc); } @@ -1514,15 +1545,15 @@ BOOL VFWAPI ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn) "\tsize: %i\n" "\tflags: 0x%x\n" "\thic: %p\n" - "\ttype: 0x%x\n" + "\ttype: %s\n" "\thandler: %s\n" "\tin/out: %p/%p\n" "\tkey/data/quality: %i/%i/%i\n", - pc->cbSize, pc->dwFlags, pc->hic, pc->fccType, wine_dbgstr_fcc(pc->fccHandler), - pc->lpbiIn, pc->lpbiOut, pc->lKey, pc->lDataRate, pc->lQ); + pc->cbSize, pc->dwFlags, pc->hic, wine_dbgstr_fcc(pc->fccType), + wine_dbgstr_fcc(pc->fccHandler), pc->lpbiIn, pc->lpbiOut, pc->lKey, + pc->lDataRate, pc->lQ); ret = ICSendMessage(pc->hic, ICM_COMPRESS_BEGIN, (DWORD_PTR)pc->lpbiIn, (DWORD_PTR)pc->lpbiOut); - TRACE(" -- %x\n", ret); if (ret == ICERR_OK) { icComp = pc->lpState;
1
0
0
0
Hans Leidekker : webservices: Implement WsSetInputToBuffer.
by Alexandre Julliard
22 Oct '15
22 Oct '15
Module: wine Branch: master Commit: 506e981d08788f165606013ac3c4fe229574e513 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=506e981d08788f165606013ac…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Oct 22 11:30:13 2015 +0200 webservices: Implement WsSetInputToBuffer. Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/webservices/reader.c | 137 ++++++++++++++++++++++++++------------ dlls/webservices/tests/reader.c | 74 ++++++++++++++++++-- dlls/webservices/webservices.spec | 2 +- 3 files changed, 164 insertions(+), 49 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=506e981d08788f1656060…
1
0
0
0
Hans Leidekker : webservices/tests: Add tests.
by Alexandre Julliard
22 Oct '15
22 Oct '15
Module: wine Branch: master Commit: c09c6916f053ab7b86b3b4e12e8e5bbfe7cf56d8 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=c09c6916f053ab7b86b3b4e12…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Oct 22 11:30:12 2015 +0200 webservices/tests: Add tests. Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/webservices/tests/writer.c | 107 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 99 insertions(+), 8 deletions(-) diff --git a/dlls/webservices/tests/writer.c b/dlls/webservices/tests/writer.c index b1c9062..26b8c78 100644 --- a/dlls/webservices/tests/writer.c +++ b/dlls/webservices/tests/writer.c @@ -31,8 +31,7 @@ static HRESULT set_output( WS_XML_WRITER *writer ) output.output.outputType = WS_XML_WRITER_OUTPUT_TYPE_BUFFER; - return WsSetOutput( writer, (const WS_XML_WRITER_ENCODING *)&encoding, - (const WS_XML_WRITER_OUTPUT *)&output, NULL, 0, NULL ); + return WsSetOutput( writer, &encoding.encoding, &output.output, NULL, 0, NULL ); } static void test_WsCreateWriter(void) @@ -191,6 +190,50 @@ static void test_WsCreateWriter(void) ok( hr == E_INVALIDARG, "got %08x\n", hr ); } +static void test_WsCreateXmlBuffer(void) +{ + HRESULT hr; + WS_HEAP *heap; + WS_XML_WRITER *writer; + WS_XML_BUFFER *buffer; + WS_BYTES bytes; + ULONG size; + + hr = WsCreateXmlBuffer( NULL, NULL, 0, NULL, NULL ); + ok( hr == E_INVALIDARG, "got %08x\n", hr ); + + hr = WsCreateXmlBuffer( NULL, NULL, 0, &buffer, NULL ); + ok( hr == E_INVALIDARG, "got %08x\n", hr ); + + hr = WsCreateHeap( 1 << 16, 0, NULL, 0, &heap, NULL ); + ok( hr == S_OK, "got %08x\n", hr ); + + hr = WsCreateXmlBuffer( heap, NULL, 0, NULL, NULL ); + ok( hr == E_INVALIDARG, "got %08x\n", hr ); + + buffer = NULL; + hr = WsCreateXmlBuffer( heap, NULL, 0, &buffer, NULL ); + ok( hr == S_OK, "got %08x\n", hr ); + ok( buffer != NULL, "buffer not set\n" ); + + hr = WsCreateWriter( NULL, 0, &writer, NULL ) ; + ok( hr == S_OK, "got %08x\n", hr ); + + size = sizeof(bytes); + hr = WsGetWriterProperty( writer, WS_XML_WRITER_PROPERTY_BYTES, &bytes, size, NULL ); + ok( hr == WS_E_INVALID_OPERATION, "got %08x\n", hr ); + + hr = WsSetOutputToBuffer( writer, buffer, NULL, 0, NULL ); + ok( hr == S_OK, "got %08x\n", hr ); + + size = sizeof(bytes); + hr = WsGetWriterProperty( writer, WS_XML_WRITER_PROPERTY_BYTES, &bytes, size, NULL ); + todo_wine ok( hr == E_INVALIDARG, "got %08x\n", hr ); + + WsFreeWriter( writer ); + WsFreeHeap( heap ); +} + static void test_WsSetOutput(void) { HRESULT hr; @@ -211,13 +254,11 @@ static void test_WsSetOutput(void) output.output.outputType = WS_XML_WRITER_OUTPUT_TYPE_BUFFER; - hr = WsSetOutput( writer, (const WS_XML_WRITER_ENCODING *)&encoding, - (const WS_XML_WRITER_OUTPUT *)&output, NULL, 0, NULL ); + hr = WsSetOutput( writer, &encoding.encoding, &output.output, NULL, 0, NULL ); ok( hr == S_OK, "got %08x\n", hr ); /* multiple calls are allowed */ - hr = WsSetOutput( writer, (const WS_XML_WRITER_ENCODING *)&encoding, - (const WS_XML_WRITER_OUTPUT *)&output, NULL, 0, NULL ); + hr = WsSetOutput( writer, &encoding.encoding, &output.output, NULL, 0, NULL ); ok( hr == S_OK, "got %08x\n", hr ); /* writer properties can be set with WsSetOutput */ @@ -225,8 +266,7 @@ static void test_WsSetOutput(void) prop.id = WS_XML_WRITER_PROPERTY_MAX_DEPTH; prop.value = &max_depth; prop.valueSize = sizeof(max_depth); - hr = WsSetOutput( writer, (const WS_XML_WRITER_ENCODING *)&encoding, - (const WS_XML_WRITER_OUTPUT *)&output, &prop, 1, NULL ); + hr = WsSetOutput( writer, &encoding.encoding, &output.output, &prop, 1, NULL ); ok( hr == S_OK, "got %08x\n", hr ); max_depth = 0xdeadbeef; @@ -237,8 +277,59 @@ static void test_WsSetOutput(void) WsFreeWriter( writer ); } +static void test_WsSetOutputToBuffer(void) +{ + HRESULT hr; + WS_HEAP *heap; + WS_XML_BUFFER *buffer; + WS_XML_WRITER *writer; + WS_XML_WRITER_PROPERTY prop; + ULONG size, max_depth; + + hr = WsSetOutputToBuffer( NULL, NULL, NULL, 0, NULL ); + ok( hr == E_INVALIDARG, "got %08x\n", hr ); + + hr = WsCreateWriter( NULL, 0, &writer, NULL ) ; + ok( hr == S_OK, "got %08x\n", hr ); + + hr = WsSetOutputToBuffer( writer, NULL, NULL, 0, NULL ); + ok( hr == E_INVALIDARG, "got %08x\n", hr ); + + hr = WsCreateHeap( 1 << 16, 0, NULL, 0, &heap, NULL ); + ok( hr == S_OK, "got %08x\n", hr ); + + hr = WsCreateXmlBuffer( heap, NULL, 0, &buffer, NULL ); + ok( hr == S_OK, "got %08x\n", hr ); + + hr = WsSetOutputToBuffer( writer, buffer, NULL, 0, NULL ); + ok( hr == S_OK, "got %08x\n", hr ); + + /* multiple calls are allowed */ + hr = WsSetOutputToBuffer( writer, buffer, NULL, 0, NULL ); + ok( hr == S_OK, "got %08x\n", hr ); + + /* writer properties can be set with WsSetOutputToBuffer */ + max_depth = 16; + prop.id = WS_XML_WRITER_PROPERTY_MAX_DEPTH; + prop.value = &max_depth; + prop.valueSize = sizeof(max_depth); + hr = WsSetOutputToBuffer( writer, buffer, &prop, 1, NULL ); + ok( hr == S_OK, "got %08x\n", hr ); + + max_depth = 0xdeadbeef; + size = sizeof(max_depth); + hr = WsGetWriterProperty( writer, WS_XML_WRITER_PROPERTY_MAX_DEPTH, &max_depth, size, NULL ); + ok( hr == S_OK, "got %08x\n", hr ); + ok( max_depth == 16, "got %u\n", max_depth ); + + WsFreeWriter( writer ); + WsFreeHeap( heap ); +} + START_TEST(writer) { test_WsCreateWriter(); + test_WsCreateXmlBuffer(); test_WsSetOutput(); + test_WsSetOutputToBuffer(); }
1
0
0
0
Hans Leidekker : webservices: Implement WsSetOutputToBuffer.
by Alexandre Julliard
22 Oct '15
22 Oct '15
Module: wine Branch: master Commit: 354bd532915205e48ef08c2f26445de09439345f URL:
http://source.winehq.org/git/wine.git/?a=commit;h=354bd532915205e48ef08c2f2…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Oct 22 11:30:11 2015 +0200 webservices: Implement WsSetOutputToBuffer. Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/webservices/webservices.spec | 2 +- dlls/webservices/writer.c | 82 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 80 insertions(+), 4 deletions(-) diff --git a/dlls/webservices/webservices.spec b/dlls/webservices/webservices.spec index c070d2f..4a8b88e 100644 --- a/dlls/webservices/webservices.spec +++ b/dlls/webservices/webservices.spec @@ -155,7 +155,7 @@ @ stub WsSetListenerProperty @ stub WsSetMessageProperty @ stdcall WsSetOutput(ptr ptr ptr ptr long ptr) -@ stub WsSetOutputToBuffer +@ stdcall WsSetOutputToBuffer(ptr ptr ptr long ptr) @ stub WsSetReaderPosition @ stub WsSetWriterPosition @ stub WsShutdownSessionChannel diff --git a/dlls/webservices/writer.c b/dlls/webservices/writer.c index 821b082..5523926 100644 --- a/dlls/webservices/writer.c +++ b/dlls/webservices/writer.c @@ -57,7 +57,11 @@ writer_props[] = struct writer { + ULONG write_pos; + char *write_bufptr; WS_XML_WRITER_OUTPUT_TYPE output_type; + struct xmlbuf *output_buf; + WS_HEAP *output_heap; ULONG prop_count; WS_XML_WRITER_PROPERTY prop[sizeof(writer_props)/sizeof(writer_props[0])]; }; @@ -102,6 +106,12 @@ static HRESULT get_writer_prop( struct writer *writer, WS_XML_WRITER_PROPERTY_ID return S_OK; } +static void free_writer( struct writer *writer ) +{ + WsFreeHeap( writer->output_heap ); + heap_free( writer ); +} + /************************************************************************** * WsCreateWriter [webservices.@] */ @@ -132,11 +142,25 @@ HRESULT WINAPI WsCreateWriter( const WS_XML_WRITER_PROPERTY *properties, ULONG c hr = set_writer_prop( writer, properties[i].id, properties[i].value, properties[i].valueSize ); if (hr != S_OK) { - heap_free( writer ); + free_writer( writer ); return hr; } } + hr = get_writer_prop( writer, WS_XML_WRITER_PROPERTY_BUFFER_MAX_SIZE, &max_size, sizeof(max_size) ); + if (hr != S_OK) + { + free_writer( writer ); + return hr; + } + + hr = WsCreateHeap( max_size, 0, NULL, 0, &writer->output_heap, NULL ); + if (hr != S_OK) + { + free_writer( writer ); + return hr; + } + *handle = (WS_XML_WRITER *)writer; return S_OK; } @@ -149,7 +173,7 @@ void WINAPI WsFreeWriter( WS_XML_WRITER *handle ) struct writer *writer = (struct writer *)handle; TRACE( "%p\n", handle ); - heap_free( writer ); + free_writer( writer ); } #define XML_BUFFER_INITIAL_ALLOCATED_SIZE 256 @@ -169,6 +193,13 @@ static struct xmlbuf *alloc_xmlbuf( WS_HEAP *heap ) return ret; } +static void free_xmlbuf( struct xmlbuf *xmlbuf ) +{ + if (!xmlbuf) return; + ws_free( xmlbuf->heap, xmlbuf->ptr ); + ws_free( xmlbuf->heap, xmlbuf ); +} + /************************************************************************** * WsCreateXmlBuffer [webservices.@] */ @@ -201,6 +232,19 @@ HRESULT WINAPI WsGetWriterProperty( WS_XML_WRITER *handle, WS_XML_WRITER_PROPERT return get_writer_prop( writer, id, buf, size ); } +static void set_output_buffer( struct writer *writer, struct xmlbuf *xmlbuf ) +{ + /* free current buffer if it's ours */ + if (writer->output_buf && writer->output_buf->heap == writer->output_heap) + { + free_xmlbuf( writer->output_buf ); + } + writer->output_buf = xmlbuf; + writer->output_type = WS_XML_WRITER_OUTPUT_TYPE_BUFFER; + writer->write_bufptr = xmlbuf->ptr; + writer->write_pos = 0; +} + /************************************************************************** * WsSetOutput [webservices.@] */ @@ -217,6 +261,12 @@ HRESULT WINAPI WsSetOutput( WS_XML_WRITER *handle, const WS_XML_WRITER_ENCODING if (!writer) return E_INVALIDARG; + for (i = 0; i < count; i++) + { + hr = set_writer_prop( writer, properties[i].id, properties[i].value, properties[i].valueSize ); + if (hr != S_OK) return hr; + } + switch (encoding->encodingType) { case WS_XML_WRITER_ENCODING_TYPE_TEXT: @@ -236,18 +286,44 @@ HRESULT WINAPI WsSetOutput( WS_XML_WRITER *handle, const WS_XML_WRITER_ENCODING switch (output->outputType) { case WS_XML_WRITER_OUTPUT_TYPE_BUFFER: - writer->output_type = WS_XML_WRITER_OUTPUT_TYPE_BUFFER; + { + struct xmlbuf *xmlbuf; + + if (!(xmlbuf = alloc_xmlbuf( writer->output_heap ))) return E_OUTOFMEMORY; + set_output_buffer( writer, xmlbuf ); break; + } default: FIXME( "output type %u not supported\n", output->outputType ); return E_NOTIMPL; } + return S_OK; +} + +/************************************************************************** + * WsSetOutputToBuffer [webservices.@] + */ +HRESULT WINAPI WsSetOutputToBuffer( WS_XML_WRITER *handle, WS_XML_BUFFER *buffer, + const WS_XML_WRITER_PROPERTY *properties, ULONG count, + WS_ERROR *error ) +{ + struct writer *writer = (struct writer *)handle; + struct xmlbuf *xmlbuf = (struct xmlbuf *)buffer; + HRESULT hr; + ULONG i; + + TRACE( "%p %p %p %u %p\n", handle, buffer, properties, count, error ); + if (error) FIXME( "ignoring error parameter\n" ); + + if (!writer || !xmlbuf) return E_INVALIDARG; + for (i = 0; i < count; i++) { hr = set_writer_prop( writer, properties[i].id, properties[i].value, properties[i].valueSize ); if (hr != S_OK) return hr; } + set_output_buffer( writer, xmlbuf ); return S_OK; }
1
0
0
0
Hans Leidekker : webservices: Implement WsCreateXmlBuffer.
by Alexandre Julliard
22 Oct '15
22 Oct '15
Module: wine Branch: master Commit: 096348607b6da1be353116bc6afa666979192818 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=096348607b6da1be353116bc6…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Oct 22 11:30:10 2015 +0200 webservices: Implement WsCreateXmlBuffer. Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/webservices/reader.c | 20 +++++++++++++------- dlls/webservices/webservices.spec | 2 +- dlls/webservices/webservices_private.h | 11 +++++++++++ dlls/webservices/writer.c | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 8 deletions(-) diff --git a/dlls/webservices/reader.c b/dlls/webservices/reader.c index 7ae4e34..870e7de 100644 --- a/dlls/webservices/reader.c +++ b/dlls/webservices/reader.c @@ -158,6 +158,18 @@ struct heap WS_HEAP_PROPERTY prop[sizeof(heap_props)/sizeof(heap_props[0])]; }; +void *ws_alloc( WS_HEAP *handle, SIZE_T size ) +{ + struct heap *heap = (struct heap *)handle; + return HeapAlloc( heap->handle, 0, size ); +} + +void ws_free( WS_HEAP *handle, void *ptr ) +{ + struct heap *heap = (struct heap *)handle; + HeapFree( heap->handle, 0, ptr ); +} + static struct heap *alloc_heap(void) { static const ULONG count = sizeof(heap_props)/sizeof(heap_props[0]); @@ -1103,12 +1115,6 @@ HRESULT WINAPI WsReadToStartElement( WS_XML_READER *handle, const WS_XML_STRING return read_to_startelement( reader, found ); } -static void *read_alloc( WS_HEAP *handle, SIZE_T size ) -{ - struct heap *heap = (struct heap *)handle; - return HeapAlloc( heap->handle, 0, size ); -} - static WCHAR *xmltext_to_widechar( WS_HEAP *heap, const WS_XML_TEXT *text ) { WCHAR *ret; @@ -1119,7 +1125,7 @@ static WCHAR *xmltext_to_widechar( WS_HEAP *heap, const WS_XML_TEXT *text ) { const WS_XML_UTF8_TEXT *utf8 = (const WS_XML_UTF8_TEXT *)text; int len = MultiByteToWideChar( CP_UTF8, 0, (char *)utf8->value.bytes, utf8->value.length, NULL, 0 ); - if (!(ret = read_alloc( heap, (len + 1) * sizeof(WCHAR) ))) return NULL; + if (!(ret = ws_alloc( heap, (len + 1) * sizeof(WCHAR) ))) return NULL; MultiByteToWideChar( CP_UTF8, 0, (char *)utf8->value.bytes, utf8->value.length, ret, len ); ret[len] = 0; break; diff --git a/dlls/webservices/webservices.spec b/dlls/webservices/webservices.spec index b666a08..c070d2f 100644 --- a/dlls/webservices/webservices.spec +++ b/dlls/webservices/webservices.spec @@ -35,7 +35,7 @@ @ stub WsCreateServiceProxy @ stub WsCreateServiceProxyFromTemplate @ stdcall WsCreateWriter(ptr long ptr ptr) -@ stub WsCreateXmlBuffer +@ stdcall WsCreateXmlBuffer(ptr ptr long ptr ptr) @ stub WsCreateXmlSecurityToken @ stub WsDateTimeToFileTime @ stub WsDecodeUrl diff --git a/dlls/webservices/webservices_private.h b/dlls/webservices/webservices_private.h index 20d3f0b..369ccbb 100644 --- a/dlls/webservices/webservices_private.h +++ b/dlls/webservices/webservices_private.h @@ -16,6 +16,17 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +struct xmlbuf +{ + WS_HEAP *heap; + void *ptr; + SIZE_T size_allocated; + SIZE_T size; +}; + +void *ws_alloc( WS_HEAP *, SIZE_T ) DECLSPEC_HIDDEN; +void ws_free( WS_HEAP *, void * ) DECLSPEC_HIDDEN; + static inline void *heap_alloc( SIZE_T size ) { return HeapAlloc( GetProcessHeap(), 0, size ); diff --git a/dlls/webservices/writer.c b/dlls/webservices/writer.c index 620cc46..821b082 100644 --- a/dlls/webservices/writer.c +++ b/dlls/webservices/writer.c @@ -152,6 +152,40 @@ void WINAPI WsFreeWriter( WS_XML_WRITER *handle ) heap_free( writer ); } +#define XML_BUFFER_INITIAL_ALLOCATED_SIZE 256 +static struct xmlbuf *alloc_xmlbuf( WS_HEAP *heap ) +{ + struct xmlbuf *ret; + + if (!(ret = ws_alloc( heap, sizeof(*ret) ))) return NULL; + if (!(ret->ptr = ws_alloc( heap, XML_BUFFER_INITIAL_ALLOCATED_SIZE ))) + { + ws_free( heap, ret ); + return NULL; + } + ret->heap = heap; + ret->size_allocated = XML_BUFFER_INITIAL_ALLOCATED_SIZE; + ret->size = 0; + return ret; +} + +/************************************************************************** + * WsCreateXmlBuffer [webservices.@] + */ +HRESULT WINAPI WsCreateXmlBuffer( WS_HEAP *heap, const WS_XML_BUFFER_PROPERTY *properties, + ULONG count, WS_XML_BUFFER **handle, WS_ERROR *error ) +{ + struct xmlbuf *xmlbuf; + + if (!heap || !handle) return E_INVALIDARG; + if (count) FIXME( "properties not implemented\n" ); + + if (!(xmlbuf = alloc_xmlbuf( heap ))) return E_OUTOFMEMORY; + + *handle = (WS_XML_BUFFER *)xmlbuf; + return S_OK; +} + /************************************************************************** * WsGetWriterProperty [webservices.@] */
1
0
0
0
← Newer
1
...
15
16
17
18
19
20
21
...
75
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
68
69
70
71
72
73
74
75
Results per page:
10
25
50
100
200