[shlwapi/tests/shreg.c] Question about ExpandEnvironmentStringsA

2005-03-21 Thread Paul Vriens
Hi,

while going through some results on test.winehq.org I've noticed
something regarding ExpandEnvironmentStringsA. One of the NT4 tests (I
think it's one from Ivan Leo Puoti?) comes back with:

shreg.c:97:sExplen1 = (24)
shreg.c:99:sExplen2 = (86)

while all others (i.e. win98/nt4/w2k/winxp) I've seen so far return:

shreg.c:97:sExplen1 = (12)
shreg.c:99:sExplen2 = (43)

Why is/could the length be doubled in his case?

Cheers,

Paul.




Re: [ntdll] NtCreateFile update

2005-03-21 Thread Mike McCormack
Jonathan Wilson wrote:
Does anyone have any links to these "documented only because Microsoft 
have to" type functions (like NtCreateFile etc)?
Ever tried google?
http://www.google.com/search?q=NtCreateFile&sourceid=mozilla&start=0&start=0&ie=utf-8&oe=utf-8


Re: [ntdll] NtCreateFile update

2005-03-21 Thread Jonathan Wilson
I found that page.
But what I want to know is if there is one overall list (at msdn or 
elsewhere) of all the things Microsoft has documented as a result of the 
various lawsuits in various places (US, EU etc). I didnt see anything 
specific on the MSDN link that pointed to such a thing.




Broken winetest compilation

2005-03-21 Thread Paul Millar
Hi,

Building winetests is broken again (see errors at end of email).

Is this the usual mingw missing functions again?

Cheers,

Paul.

PS, actually there's another problem to do with a RAID system dying.  I'll 
relocate the webpages to somewhere a bit better.

i686-mingw32msvc-gcc db.o record.o suminfo.o testlist.o  -o msi_test.exe -lmsi 
-lkernel32
suminfo.o(.text+0x405): In function `func_suminfo':
/home/paul/Production/wine-cross-source/dlls/msi/tests/suminfo.c:111: 
undefinedreference to [EMAIL PROTECTED]'
suminfo.o(.text+0x473):/home/paul/Production/wine-cross-source/dlls/msi/tests/suminfo.c:114:
 
undefined reference to [EMAIL PROTECTED]'
suminfo.o(.text+0x4dc):/home/paul/Production/wine-cross-source/dlls/msi/tests/suminfo.c:117:
 
undefined reference to [EMAIL PROTECTED]'
suminfo.o(.text+0x545):/home/paul/Production/wine-cross-source/dlls/msi/tests/suminfo.c:120:
 
undefined reference to [EMAIL PROTECTED]'
suminfo.o(.text+0x637):/home/paul/Production/wine-cross-source/dlls/msi/tests/suminfo.c:130:
 
undefined reference to [EMAIL PROTECTED]'
suminfo.o(.text+0x69f):/home/paul/Production/wine-cross-source/dlls/msi/tests/suminfo.c:133:
 
more undefined references to [EMAIL PROTECTED]' follow
suminfo.o(.text+0xea6): In function `func_suminfo':
/home/paul/Production/wine-cross-source/dlls/msi/tests/suminfo.c:197: 
undefinedreference to [EMAIL PROTECTED]'
distcc[17612] ERROR: compile on localhost failed
make: *** [msi_test.exe] Error 1


pgpNuphN5cVIw.pgp
Description: PGP signature


Re: dlls/user/button.c - fix AUTO3STATE with BS_OWNERDRAW (Resend)

2005-03-21 Thread Alexandre Julliard
Michael Lin <[EMAIL PROTECTED]> writes:

>  inline static UINT get_button_type( LONG window_style )
>  {
> -return (window_style & 0x0f);
> +if ((window_style & BS_OWNERDRAW) == BS_OWNERDRAW)
> +return BS_OWNERDRAW;
> +else
> +return (window_style & 0x0f);

BS_OWNERDRAW is not a bit mask, this won't work right. What is the
problem you are trying to fix?

-- 
Alexandre Julliard
[EMAIL PROTECTED]



Re: RICHEDIT: RTF reader i18n (now with font charset support)

2005-03-21 Thread Phil Krylov
On Mon, 21 Mar 2005 14:40:38 +0300
Vitaly Lipatov <[EMAIL PROTECTED]> wrote:

> > > Will we do this code in locale independent manner? Why we have
> > > ansiCodePage=1252 by default?
> >
> > It is locale independent. 1252 is the default value used if RTF does not
> > specify another codepage (which almost never happens). If I used
> > GetACP() here, the same RTF document would be differently imported
> > depending on user locale. RTF is not supposed to act like this. If RTF
> If I try open RTF where codepage is not specified, guessed codepage must be 
> the same as ACP. For instance if I get such file here in Russia, I suppose it 
> in cp1251 codepage.
> 
> > does not specify any codepage it means that it uses CP1252.
> I recommend use GetACP, otherwise in will some disadvantage for non cp1252 
> users.
> 
> > How do you find this code is locale dependent? IMHO it's _in_dependent of
> > locale.
> I worry only about default codepage.

OK, I've made some tests using the original M$ richedit, and they show the
following: \ansicpg keyword in the RTF header does not affect the used encoding
when importing RTF. The encoding used for import is determined by \fcharset
setting for the "current" font. If it specifies \fcharset1 (DEFAULT_CHARSET)
or is omitted, GetACP() is used. If it specifies \fcharset0 (ANSI_CHARSET),
CP1252 is used regardless of current locale. For other charsets, their
respective codepages are used.

I'll commit the required changes to the RTF reader soon.

-- Ph.



Re: [ntdll] NtCreateFile update

2005-03-21 Thread Ivan Leo Puoti
Jonathan Wilson wrote:
I found that page.
But what I want to know is if there is one overall list (at msdn or 
elsewhere) of all the things Microsoft has documented as a result of the 
various lawsuits in various places (US, EU etc). I didnt see anything 
specific on the MSDN link that pointed to such a thing.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnapiover/html/api-overview.asp
Ivan.



Re: [shlwapi/tests/shreg.c] Question about ExpandEnvironmentStringsA

2005-03-21 Thread Ivan Leo Puoti
Paul Vriens wrote:
Hi,
while going through some results on test.winehq.org I've noticed
something regarding ExpandEnvironmentStringsA. One of the NT4 tests (I
think it's one from Ivan Leo Puoti?)
Possibly, I don't use winrash because I want interactive tests, so you 
won't see my nick in the results.
Ivan.



Re: Eliminate casts of the return value of HeapAlloc

2005-03-21 Thread Francois Gouget
On Mon, 21 Mar 2005, Alexandre Julliard wrote:
[...]
Log message:
Mike McCormack <[EMAIL PROTECTED]>
Eliminate casts of the return value of HeapAlloc.
This could be turned into a pretty easy janitorial the starting point of 
which would be the output of this command:

find . -name "*.[ch]" | xargs egrep "\) *Heap(Re)?Alloc"
(344 lines)
There are a couple of places where the output of HeapAlloc is being cast 
to a DWORD but except for those it seems pretty straightforward.

--
Francois Gouget [EMAIL PROTECTED]http://fgouget.free.fr/
  La terre est une b\xEAta...


Re: [shlwapi/tests/shreg.c] Question about ExpandEnvironmentStringsA

2005-03-21 Thread Paul Vriens
On Mon, 2005-03-21 at 13:39, Ivan Leo Puoti wrote:
> Paul Vriens wrote:
> > Hi,
> > 
> > while going through some results on test.winehq.org I've noticed
> > something regarding ExpandEnvironmentStringsA. One of the NT4 tests (I
> > think it's one from Ivan Leo Puoti?)
> 
> Possibly, I don't use winrash because I want interactive tests, so you won't 
> see my nick in the results.

I don't use winrash (anymore), but start winetest with the -t (tag)
option to still have something.

Paul.




Status and (nearby) future of wined3d

2005-03-21 Thread Paul Vriens
Hi,

what will happen to the wined3d stuff, now Oliver has some 'problems'
staying on-line?

There were at least 4 patches or so he send which were not applied
(yet).

If the sole reason for that is that it couldn't be merged/applied to CVS
I could give it a try. But that's about the only thing I can do
regarding wined3d stuff.

Cheers,

Paul.




Re: Broken winetest compilation

2005-03-21 Thread Hans Leidekker
On Monday 21 March 2005 12:49, Paul Millar wrote:

> Building winetests is broken again (see errors at end of email).
> Is this the usual mingw missing functions again?

I updated my RPM packages today and included a fix for this
breakage. As usual you can find them here:

  http://mirzam.it.vu.nl/mingw/

 -Hans



Re: Preview-window works in Virtualdub,Paltalk etc.

2005-03-21 Thread Rick Romero
That code doesn't with with my QuickCam 3000, which defaults to YUV420.

The attached patch adds YUV420 support back in to vidcat.c, and should
still work with RGB cams.

Rick

On Sun, 2005-03-20 at 22:37 +, luis lenders wrote:
> Hi, don't know if it's of much use for anyone, but i
> can now view the images from my webcam in the preview
> window in programs like Virtualdub, Paltalk and
> WebCamnow. Basically the attached "patch" reads a
> RGB-image from my 
> video4linux device and  "turns" this into a bitmap,
> which is then displayed. The device must be able to
> "read  RGB's". In case you would like to try, replace
> dlls/avicap32 with the attached one, and replace 
> include/vfw.h with the attached vfw.h. I'm skilled
> enough to turn this into a real patch, maybe someone
> with more programming capabilities could give it try.
> 
> Regards Luis
> 
> Send instant messages to your online friends http://uk.messenger.yahoo.com 
--- vidcat.c	2005-03-20 23:07:42.0 -0500
+++ ../wine/dlls/avicap32/vidcat.c	2005-03-21 09:02:09.211495248 -0500
@@ -101,7 +101,9 @@
 	int len;
 	int bytes = 3;
 
-		
+	if (ioctl (dev, VIDIOCGMBUF, &vid_buf) == -1) {	
+	printf("we gonna use read\n");
+	}	
 //VIDIOCGMBUF reports the size of buffer to mmap and the offset within the buffer for each frame
 	if (ioctl (dev, VIDIOCGMBUF, &vid_buf) != -1) 
 	{
@@ -138,21 +140,22 @@
 	}
 	*size = vid_buf.size;
 	
-/*	if (palette == VIDEO_PALETTE_YUV420P) {
-		if (verbose)
-			fprintf (stderr, "converting from YUV to RGB\n");
+	if (palette == VIDEO_PALETTE_YUV420P) {
+//		if (verbose)
+//			fprintf (stderr, "converting from YUV to RGB\n");
 		convmap = malloc ( width * height * bytes );
 		v4l_yuv420p2rgb (convmap, map, width, height, bytes * 8);
 		memcpy (map, convmap, (size_t) width * height * bytes);
 		free (convmap);
 	} else if (palette == VIDEO_PALETTE_YUV422P) {
-		if (verbose)
-			fprintf (stderr, "converting from YUV to RGB\n");
+//		if (verbose)
+//			fprintf (stderr, "converting from YUV to RGB\n");
 		convmap = malloc ( width * height * bytes );
 		v4l_yuv422p2rgb (convmap, map, width, height, bytes * 8);
 		memcpy (map, convmap, (size_t) width * height * bytes);
 		free (convmap);
-	}*/
+	}
+
 	printf ("got picture\n");
 	return (map);
 	}	
@@ -364,14 +367,33 @@
 	//int palette = VIDEO_PALETTE_YUV420;
 	int num = 0;
 	dev=DEVICE;
+
+	if (!num) {
+	/* if we loop we have to do this only once. so
+			 *  * check frame number and execute only for the
+			 *   * frame number "0".
+			 **/
+	if (v4l_set_input (dev, input, norm) == -1) {
+	return (1);
+	   }
+	if (v4l_check_size (dev, &width, &height) == -1) {
+	return (1);
+	}
+	   if (v4l_check_palette (dev, &palette) == -1) {
+	 return (1);
+ }
+   }
+
+
+
+
 	image = get_image (dev, width, height, palette, &size);
 //	if (!size)
 //		close (dev);
 	if (image) {
-		
 
 		/*char* */bmpimage=ConvertRGBToBMPBuffer (image,width,height);//,newsize );
-		
+
 //		SaveBMP (bmpimage,width,height, bmpsize, szName );
 
 //		if (size) {


Re: Status and (nearby) future of wined3d

2005-03-21 Thread Oliver Stieber

--- Paul Vriens <[EMAIL PROTECTED]> wrote:
> Hi,
> 
> what will happen to the wined3d stuff, now Oliver
> has some 'problems'
> staying on-line?
> 
Thanks to everyone I should be ok for a while, now.

> 
> If the sole reason for that is that it couldn't be
> merged/applied to CVS
> I could give it a try. But that's about the only
> thing I can do
> regarding wined3d stuff.
> 

I've just merged with wine head and am about to resend
the patches, and another couple for stateblocks and
sampler states.

After that there's vertex declarations and resource
tracking, pointsprites , non-power2 textures, memory
management, D3DPOOL_DEFAULT texture operations and a
few more tidyups.

Then I should have all the stable work synced with
winehead.

After that stateblocks need to be refactored to get
offscreen textures, swapchains and multiple
devices/threads working properly which may take a
while  to stabalise. A software vertex pipeline also
needs writing to fill in the gaps in the hardware
support which is faily easy, and d3d8 interfaces need
to wrap up wined3d.

Shaders needs moving across from d3d8 which is faily
simple and shader 2.0 support needs writing which is a
little tricker.

> Cheers,
> 
> Paul.
> 
> 
> 

Send instant messages to your online friends http://uk.messenger.yahoo.com 



Regression in file tests

2005-03-21 Thread Jakob Eriksson
Between
http://cvs.winehq.org/cvsweb/wine/dlls/kernel/tests/file.c#rev1.46
http://test.winehq.org/data/200502231000/
and
http://test.winehq.org/data/200503041000/
http://cvs.winehq.org/cvsweb/wine/dlls/kernel/tests/file.c#rev1.48

we have more about 50 more failed test results.  What happened?
regards,
Jakob



Re: [WINEALSA] direct sound fallback patch

2005-03-21 Thread Robert Reif
Robert Reif wrote:
Don't fail when opening a device in direct sound mode.
Rather, try alternate formats first before failing.
With the wave api, requesting a format that the
hardware can't do should fail so the wave mapper can
fix it up.  However, the direct sound api does not
expect a failure (within reason) if the format isn't
supported in hardware but expects the closest
format that the hardware does support.
This gets the direct sound regression tests working
better with the ALSA "hw" device and my lame Intel
builtin sound card.
Use this patch instead. Fixes a format bug.
Index: dlls/winmm/winealsa/audio.c
===
RCS file: /home/wine/wine/dlls/winmm/winealsa/audio.c,v
retrieving revision 1.71
diff -u -p -r1.71 audio.c
--- dlls/winmm/winealsa/audio.c 21 Mar 2005 12:32:48 -  1.71
+++ dlls/winmm/winealsa/audio.c 21 Mar 2005 18:02:05 -
@@ -315,6 +315,22 @@ static const char * getMessage(UINT msg)
 return unknown;
 }
 
+static const char * getFormat(WORD wFormatTag)
+{
+static char unknown[32];
+#define FMT_TO_STR(x) case x: return #x
+switch(wFormatTag) {
+FMT_TO_STR(WAVE_FORMAT_PCM);
+FMT_TO_STR(WAVE_FORMAT_EXTENSIBLE);
+FMT_TO_STR(WAVE_FORMAT_MULAW);
+FMT_TO_STR(WAVE_FORMAT_ALAW);
+FMT_TO_STR(WAVE_FORMAT_ADPCM);
+}
+#undef FMT_TO_STR
+sprintf(unknown, "UNKNOWN(0x%04x)", wFormatTag);
+return unknown;
+}
+
 static DWORD bytes_to_mmtime(LPMMTIME lpTime, DWORD position,
  WAVEFORMATPCMEX* format)
 {
@@ -1758,6 +1774,12 @@ static DWORD wodOpen(WORD wDevID, LPWAVE
 memcpy(&wwo->waveDesc, lpDesc, sizeof(WAVEOPENDESC));
 copy_format(lpDesc->lpFormat, &wwo->format);
 
+TRACE("Requested this format: %ldx%dx%d %s\n",
+  wwo->format.Format.nSamplesPerSec,
+  wwo->format.Format.wBitsPerSample,
+  wwo->format.Format.nChannels,
+  getFormat(wwo->format.Format.wFormatTag));
+
 if (wwo->format.Format.wBitsPerSample == 0) {
WARN("Resetting zeroed wBitsPerSample\n");
wwo->format.Format.wBitsPerSample = 8 *
@@ -1789,7 +1811,19 @@ static DWORD wodOpen(WORD wDevID, LPWAVE
 else
wwo->write = snd_pcm_mmap_writei;
 
-EXIT_ON_ERROR( snd_pcm_hw_params_set_channels(pcm, hw_params, 
wwo->format.Format.nChannels), MMSYSERR_INVALPARAM, "unable to set required 
channels");
+if ((err = snd_pcm_hw_params_set_channels(pcm, hw_params, 
wwo->format.Format.nChannels)) < 0) {
+WARN("unable to set required channels: %d\n", 
wwo->format.Format.nChannels);
+if (dwFlags & WAVE_DIRECTSOUND) {
+if (wwo->format.Format.nChannels > 2)
+wwo->format.Format.nChannels = 2;
+else if (wwo->format.Format.nChannels == 2)
+wwo->format.Format.nChannels = 1;
+else if (wwo->format.Format.nChannels == 1)
+wwo->format.Format.nChannels = 2;
+WARN("changed number of channels from %d to %d\n", 
lpDesc->lpFormat->nChannels, wwo->format.Format.nChannels);
+}
+EXIT_ON_ERROR( snd_pcm_hw_params_set_channels(pcm, hw_params, 
wwo->format.Format.nChannels ), MMSYSERR_INVALPARAM, "unable to set required 
channels" );
+}
 
 if ((wwo->format.Format.wFormatTag == WAVE_FORMAT_PCM) ||
 ((wwo->format.Format.wFormatTag == WAVE_FORMAT_EXTENSIBLE) &&
@@ -1819,7 +1853,24 @@ static DWORD wodOpen(WORD wDevID, LPWAVE
 return WAVERR_BADFORMAT;
 }
 
-EXIT_ON_ERROR( snd_pcm_hw_params_set_format(pcm, hw_params, format), 
MMSYSERR_INVALPARAM, "unable to set required format");
+if ((err = snd_pcm_hw_params_set_format(pcm, hw_params, format)) < 0) {
+WARN("unable to set required format: %s\n", 
snd_pcm_format_name(format));
+if (dwFlags & WAVE_DIRECTSOUND) {
+if ((wwo->format.Format.wFormatTag == WAVE_FORMAT_PCM) ||
+   ((wwo->format.Format.wFormatTag == WAVE_FORMAT_EXTENSIBLE) &&
+   IsEqualGUID(&wwo->format.SubFormat, 
&KSDATAFORMAT_SUBTYPE_PCM))) {
+if (wwo->format.Format.wBitsPerSample != 16) {
+wwo->format.Format.wBitsPerSample = 16;
+format = SND_PCM_FORMAT_S16_LE;
+} else {
+wwo->format.Format.wBitsPerSample = 8;
+format = SND_PCM_FORMAT_U8;
+}
+WARN("changed bits per sample from %d to %d\n", 
lpDesc->lpFormat->wBitsPerSample, wwo->format.Format.wBitsPerSample); 
+}
+}
+EXIT_ON_ERROR( snd_pcm_hw_params_set_format(pcm, hw_params, format), 
MMSYSERR_INVALPARAM, "unable to set required format" );
+}
 
 rate = wwo->format.Format.nSamplesPerSec;
 dir=0;
@@ -1830,9 +1881,14 @@ static DWORD wodOpen(WORD wDevID, LPWAVE
 return WAVERR_BADFORMAT;
 }
 if (rate != wwo->format.Format.nSamplesPerSec) {
-   ERR("Rate doesn't match (requested %ld Hz, got %d Hz)\n", 
ww

Re: [WINEALSA] multiple sound card support patch review needed

2005-03-21 Thread Paul van Schayck
On Sat, 19 Mar 2005 14:44:30 -0500, Robert Reif <[EMAIL PROTECTED]> wrote:
> I downloaded the program and ran it and don't even get as far as you got.
> 
> Try different devices and combinations of devices:
> hw, plug:hw plughw
> and see if that helps. I'll look into it when I get some more time.

Updated my tree. App works again. Can now also test the behaviour of this patch.

When setting your PlaybackDevice to a dmix plug device you will get a
list of (the same) dmix devices. This works arround it, but not really
nicely I think:

char *prev_name;
if(strcmp(snd_pcm_info_get_name(info),prev_name))
prev_name = (char *)snd_pcm_info_get_name(info);
else
continue;

And I think you should not break out of the detect loop when you can't
open a device. There might be more devices you can use arround.
Talking about this break:

snd_pcm_open(&h, wwo->device, SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK);
if (!h)
break;

Changing this to a continue will make my second soundcard device show
up if my first (no hardware mixing) is in use.

Paul



Attempt to make buttons themed

2005-03-21 Thread Frank Richter
Hi,
to see how easy (or not) it would be to make the controls use themes, I 
tried to get themed buttons; the result is the attached patch (to try it 
out, you need an .msstyles file and appropriate registry setup). It's 
probably not perfect as it is, comments/questions are welcome.

Screenshot:
http://img87.exs.cx/my.php?loc=img87&image=winewiththemedbuttons3xh.png
Some funny side effect when theming is enabled: applications show up in 
standard colors, but as soon as the first button is created, the colors 
switch to the theme's colors. I guess opening the theme data in the 
button code triggers some uxtheme initialization that in turn changes 
the system colors.

Also, all applications get themed buttons, which diverges from WinXPs 
behaviour and may or may not be desired for some apps.

-f.r.
Index: dlls/user/Makefile.in
===
RCS file: /home/wine/wine/dlls/user/Makefile.in,v
retrieving revision 1.88
diff -u -r1.88 Makefile.in
--- dlls/user/Makefile.in   10 Mar 2005 15:47:53 -  1.88
+++ dlls/user/Makefile.in   21 Mar 2005 18:46:31 -
@@ -4,7 +4,7 @@
 SRCDIR= @srcdir@
 VPATH = @srcdir@
 MODULE= user32.dll
-IMPORTS   = gdi32 advapi32 kernel32 ntdll
+IMPORTS   = gdi32 advapi32 kernel32 uxtheme ntdll
 EXTRALIBS = $(LIBUNICODE)
 
 SPEC_SRCS16 = \
Index: dlls/user/button.c
===
RCS file: /home/wine/wine/dlls/user/button.c,v
retrieving revision 1.6
diff -u -r1.6 button.c
--- dlls/user/button.c  23 Dec 2004 17:21:05 -  1.6
+++ dlls/user/button.c  21 Mar 2005 18:46:32 -
@@ -71,6 +71,9 @@
 #include "windef.h"
 #include "winbase.h"
 #include "wingdi.h"
+#include "winuser.h" /* Indirectly required by uxtheme.h */
+#include "uxtheme.h"
+#include "tmschema.h"
 #include "wine/winuser16.h"
 #include "controls.h"
 #include "user_private.h"
@@ -79,7 +82,8 @@
 #define STATE_GWL_OFFSET  0
 #define HFONT_GWL_OFFSET  (sizeof(LONG))
 #define HIMAGE_GWL_OFFSET (HFONT_GWL_OFFSET+sizeof(HFONT))
-#define NB_EXTRA_BYTES(HIMAGE_GWL_OFFSET+sizeof(HANDLE))
+#define HTHEME_GWL_OFFSET (HIMAGE_GWL_OFFSET+sizeof(HANDLE))
+#define NB_EXTRA_BYTES(HTHEME_GWL_OFFSET+sizeof(HTHEME))
 
   /* Button state values */
 #define BUTTON_UNCHECKED   0x00
@@ -95,6 +99,7 @@
 
 static UINT BUTTON_CalcLabelRect( HWND hwnd, HDC hdc, RECT *rc );
 static void PB_Paint( HWND hwnd, HDC hDC, UINT action );
+static void PB_PaintThemed( HWND hwnd, HDC hDC, UINT action );
 static void CB_Paint( HWND hwnd, HDC hDC, UINT action );
 static void GB_Paint( HWND hwnd, HDC hDC, UINT action );
 static void UB_Paint( HWND hwnd, HDC hDC, UINT action );
@@ -123,7 +128,7 @@
 
 typedef void (*pfPaint)( HWND hwnd, HDC hdc, UINT action );
 
-static const pfPaint btnPaintFunc[MAX_BTN_TYPE] =
+static const pfPaint btnUnthemedPaintFunc[MAX_BTN_TYPE] =
 {
 PB_Paint,/* BS_PUSHBUTTON */
 PB_Paint,/* BS_DEFPUSHBUTTON */
@@ -139,6 +144,22 @@
 OB_Paint /* BS_OWNERDRAW */
 };
 
+static const pfPaint btnThemedPaintFunc[MAX_BTN_TYPE] =
+{
+PB_PaintThemed,/* BS_PUSHBUTTON */
+PB_PaintThemed,/* BS_DEFPUSHBUTTON */
+CB_Paint,  /* BS_CHECKBOX */
+CB_Paint,  /* BS_AUTOCHECKBOX */
+CB_Paint,  /* BS_RADIOBUTTON */
+CB_Paint,  /* BS_3STATE */
+CB_Paint,  /* BS_AUTO3STATE */
+GB_Paint,  /* BS_GROUPBOX */
+UB_Paint,  /* BS_USERBUTTON */
+CB_Paint,  /* BS_AUTORADIOBUTTON */
+NULL,  /* Not defined */
+OB_Paint   /* BS_OWNERDRAW */
+};
+
 static HBITMAP hbitmapCheckBoxes = 0;
 static WORD checkBoxWidth = 0, checkBoxHeight = 0;
 
@@ -183,9 +204,26 @@
 return (window_style & 0x0f);
 }
 
+inline static HTHEME get_button_theme( HWND hwnd )
+{
+return (HTHEME)GetWindowLongPtrW( hwnd, HTHEME_GWL_OFFSET );
+}
+
+inline static void set_button_theme( HWND hwnd, HTHEME theme )
+{
+SetWindowLongPtrW( hwnd, HTHEME_GWL_OFFSET, (ULONG_PTR)theme );
+}
+
+inline static const pfPaint* get_paint_funcs ( HWND hwnd )
+{
+HTHEME theme = get_button_theme( hwnd );
+return ( theme != NULL ) ? btnThemedPaintFunc : btnUnthemedPaintFunc;
+}
+
 /* paint a button of any type */
 inline static void paint_button( HWND hwnd, LONG style, UINT action )
 {
+const pfPaint* btnPaintFunc = get_paint_funcs( hwnd );
 if (btnPaintFunc[style] && IsWindowVisible(hwnd))
 {
 HDC hdc = GetDC( hwnd );
@@ -215,6 +253,9 @@
 UINT btn_type = get_button_type( style );
 LONG state;
 HANDLE oldHbitmap;
+static const WCHAR themeClass[] = { 'B','u','t','t','o','n',0 };
+HTHEME theme;
+const pfPaint* btnPaintFunc = get_paint_funcs( hWnd );
 
 pt.x = LOWORD(lParam);
 pt.y = HIWORD(lParam);
@@ -249,8 +290,24 @@
 if (btn_type >= MAX_BTN_TYPE)
 return -1; /* abort */
 set_button_state( hWnd, BUTTON_UNCHECKED )

msi.spec different parameter count of exported functions

2005-03-21 Thread Stefan Leichter
Hello,

when played with native msi.dll i found three functions with have a different 
parameter count between msi.spec of wine and the native dll. Here are the 
snoop logs of the native dll and wine:

0009:RET  msi.MsiDatabaseImportA(,,) retval=0006 
ret=004013fc
0009:RET  msi.MsiDatabaseImportW(,,) retval=0006 
ret=004013fc
0009:RET  msi.MsiCreateAndVerifyInstallerDirectory() retval= 
ret=004013fc

I have used the msi.dll version 2.6.2600.11833 for testing. The question now 
is: Can we trust the +snoop logging?

Bye Stefan



Re: Attempt to make buttons themed

2005-03-21 Thread Mike Hearn
On Mon, 21 Mar 2005 20:05:57 +0100, Frank Richter wrote:
> Hi,
> to see how easy (or not) it would be to make the controls use themes, I 
> tried to get themed buttons; the result is the attached patch (to try it 
> out, you need an .msstyles file and appropriate registry setup). It's 
> probably not perfect as it is, comments/questions are welcome.

Hey, brilliant work! Definitely submit this - it doesn't matter if not
everything is themed all at once, this can be a long term project and the
approach you've taken seems to be a good one.

Yes XP does not theme all apps for compatibility reasons. Once more of our
controls are themable I guess we can start to worry about switching it on
at the right time.

I'd suggest posting this to wine-patches and seeing what happens. Once we
get it into CVS, would you be willing to move on and do the other controls?

thanks -mike




Re: dlls/user/button.c - fix AUTO3STATE with BS_OWNERDRAW (Resend)

2005-03-21 Thread Michael Lin
Hi Alexandre,
I was trying to make the following dialog compile and work in WINE. The 
dialog compiles and works in Borland.

MSGBOX_DLG DIALOG 21, 32, 168, 83
STYLE DS_MODALFRAME | 0x4L | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Error"
FONT 8, "MS Sans Serif"
{
GROUPBOX "", 101, 6, -2, 157, 61, BS_GROUPBOX | WS_CHILD | WS_VISIBLE
AUTO3STATE "Text", 103, 10, 9, 149, 47, BS_OWNERDRAW | WS_CHILD | 
WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "Cancel", 111, 6, 65, 50, 14, BS_PUSHBUTTON | WS_CHILD | 
WS_VISIBLE | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 112, 58, 65, 50, 14
PUSHBUTTON "Cancel", 113, 110, 65, 50, 14
}

Alexandre Julliard wrote:
Michael Lin <[EMAIL PROTECTED]> writes:
 

inline static UINT get_button_type( LONG window_style )
{
-return (window_style & 0x0f);
+if ((window_style & BS_OWNERDRAW) == BS_OWNERDRAW)
+return BS_OWNERDRAW;
+else
+return (window_style & 0x0f);
   

BS_OWNERDRAW is not a bit mask, this won't work right. What is the
problem you are trying to fix?
 




Re: Eliminate casts of the return value of HeapAlloc

2005-03-21 Thread Dimitrie O. Paun
On Mon, Mar 21, 2005 at 02:03:59PM +0100, Francois Gouget wrote:
> On Mon, 21 Mar 2005, Alexandre Julliard wrote:
> [...]
> >Log message:
> > Mike McCormack <[EMAIL PROTECTED]>
> > Eliminate casts of the return value of HeapAlloc.
> 
> This could be turned into a pretty easy janitorial the starting point of 
> which would be the output of this command:
> 
> find . -name "*.[ch]" | xargs egrep "\) *Heap(Re)?Alloc"
> (344 lines)
> 
> There are a couple of places where the output of HeapAlloc is being cast 
> to a DWORD but except for those it seems pretty straightforward.

Yeah, it's so straightforward, we should just do it.
However, I don't think we should sed it, most places
require human touch to maintain sane formatting.

I'll send in a patch for windows/*.c shortly.

-- 
Dimi.



registry TODO

2005-03-21 Thread James Hawkins
Alexandre,

Recently you removed the loading of the Windows registry on startup
and stated that

> Nobody's working on it, so it won't be supported until someone cares
> enough to do it. I encouraged a few people to start working on it but
> nobody did, so taking out the existing support is a way to provide
> more encouragement. If that's not enough then the feature simply won't
> be supported anymore.

What needs to be done concerning this TODO?  Looking through Bugzilla
I found bug #422:

"Currently Wine loads the complete registry into memory at startup. This is
relatively ok when the registry is small such as in fake_windows configurations,
but when importing the registry fro a Windows partition this can result in the
wineserver allocating more than 30MB. This slows down startup times very
significantly and wastes memory even if most of it is going to be swapped out.

One of the reasons why Wine puts all the registry into memory on startup is that
the current registry file format does not lend itself well to random accesses
(especially writes). But there is no fundamental reason why Wine needs to read
all the registry on startup. Hence this proposal to:
 * change the registry file format so that Wine can easily make random accesses.
A 'database' format may be appropriate here, maybe based on the Berkeley
database Library (libdb2/libdb3) or the GNU dbm library (libgbm1, but check
license issues).
 * put in place a mechanism to update these files from the Windows registry
files when appropriate (it seems impractical to access the Windows files
directly)
 * modify the registry routines to retrieve only the data required by the
application and cache it in memory"

Is this a valid description of what needs to be done?

-- 
James Hawkins



Re: NTDLL: teach wine about Mingw32 (RESUBMIT)

2005-03-21 Thread Steven Edwards
Hi,

--- "C. Scott Ananian" <[EMAIL PROTECTED]> wrote:
> This patch seems to have gotten lost: it was sent last Thursday but hasn't 
> yet been applied or rejected (as far as I can tell).  It's even got a 
> testimonial from a wine developer: Andreas Mohr says, "Nice patch." =)

I don't understand why Mingw does not report the same value as the Windows 
compiler here. Do you
know lcc or and other free compiler based application need this? If not maybe 
it should be fixed
in mingw.

Thanks
Steven




__ 
Do you Yahoo!? 
Make Yahoo! your home page 
http://www.yahoo.com/r/hs



Re: Eliminate casts of the return value of HeapAlloc

2005-03-21 Thread Mike McCormack
Dimitrie O. Paun wrote:
Yeah, it's so straightforward, we should just do it.
However, I don't think we should sed it, most places
require human touch to maintain sane formatting.
Well, it's always nice to leave some entry level tasks behind for people 
who want to start working on Wine.  They're really easy to do, but by 
writing the patch, and submitting it, newcomers can learn alot about the 
patch submission process.

Mike