Re: d3dx9_36 [try 3]: Add a few tests for D3DXCreateBox

2011-03-16 Thread Matteo Bruni
Most of the objections from the previous try still stand: check your
whitespaces (whitespace after every comma, whitespaces around
operators, whitespace after if or for keywords), you have to be
consistent. Comparing indices doesn't make much sense now that you
don't check vertices, I think you should drop that too.
You could probably instead check for min and max x, y and z vertices
coordinates, verifying that the box has the expected dimensions.




Re: wineport: Add support for ctz().

2011-03-16 Thread Alexandre Julliard
Adam Martinson amartin...@codeweavers.com writes:

 @@ -239,6 +243,19 @@ extern int getopt_long_only (int ___argc, char *const 
 *___argv,
  int ffs( int x );
  #endif
  
 +#if defined(__GNUC__)  (GCC_VERSION = 30406)
 +#define ctz(x) __builtin_ctz(x)
 +#elif defined(__GNUC__)  (defined(__i386__) || defined(__x86_64__))
 +static inline int ctz( unsigned int x )
 +{
 +int ret;
 +__asm__(bsfl %1, %0 : =r (ret) : r (x));
 +return ret;
 +}
 +#else
 +#define ctz(x) (ffs(x)-1)
 +#endif

There's no reason to add this. Just use ffs().

-- 
Alexandre Julliard
julli...@winehq.org




Re: wined3d/device: Avoid repeated calculations of idx and shift in IWineD3DDeviceImpl_MarkStateDirty(). (resend)

2011-03-16 Thread Alexandre Julliard
Adam Martinson amartin...@codeweavers.com writes:

 ---
  dlls/wined3d/device.c |   17 -
  1 files changed, 8 insertions(+), 9 deletions(-)

You still need to demonstrate that this is an improvement. Compilers are
pretty good nowadays, and doing such micro-optimizations at the source
level is usually futile.

-- 
Alexandre Julliard
julli...@winehq.org




Re: mshtml, shdocvw: Initialize OLEINPLACEFRAMEINFO.cb for IOleInPlaceSite::GetWindowContext

2011-03-16 Thread Jacek Caban

Hi Thomas,

On 3/16/11 11:21 AM, Thomas Faber wrote:

Hi,

the documentation for the OLEINPLACEFRAMEINFO structure [1] says
that the 'cb' member must be initialized before passing the structure
to IOleInPlaceSite::GetWindowContext (where the rest of it will be
filled).
In addition to the fix, I have updated the corresponding
tests to check this member instead of setting it, and they pass
on Windows as expected [2]. I've used a= compare for future
version compatibility.


Comparing to the exact value is better in this case. If the value will 
ever change, we want to know that and tests failures will help us notice it.


Jacek




Re: Wine Gecko 1.2.0 released

2011-03-16 Thread Jacek Caban

On 3/15/11 10:44 PM, Scott Ritchie wrote:

Do you really mean 1.3.15 or do you mean the upcoming 1.3.16?


I meant post-1.3.15, so it's the updcoming 1.3.16, sorry for the confusion.

Jacek





winmm DriverCallback with 0 CALLBACK_WINDOW

2011-03-16 Thread Joerg-Cyril.Hoehle
Hi,

Testbot job #9994 proves that Wine and native differ in their handling of a 0 
CALLBACK_WINDOW handle.
Wine's PostMessage redirects a 0 handle to PostThreadMessage(currentThreadID()),
while native finds no notification on the thread's queue in such a case.

(As a consequence, Wine's player thread will send notification messages to 
itself ...)

Alas, the test case does not allow to tell whether the difference in with
 - winmm:DriverCallback or
 - whether winmm:midiOutOpen sees the 0 handle and remap to CALLBACK_NULL 
internally,
   before ever calling DriverCallback.

Likewise, a NULL CALLBACK_FUNCTION does not cause a crash since w2k,
but we don't know whether winmm:DriverCallback catches that case (as Wine does 
nowadays) or
whether winmm:wave/midi/mixer/Open remap that to maybe CALLBACK_NULL and 
proceed.

Is there any means to tell the difference, short of writing a real driver with
debug output and installing it on a native system, having native DriverCallback 
called directly?

Any ideas?
 Jörg Höhle

BTW, why does winealsa.drv:mixer use a custom callback mechanism instead of the
generic DriverCallback that the other winmm drivers use? Historical reasons 
only?



lifetime of the MIDI/MIXER/WAVEOPENDESC structure?

2011-03-16 Thread Joerg-Cyril.Hoehle
Hi,

MSDN is silent about the lifetime of the MIDI/MIXER/WAVEOPENDESC structure
that is deliverred via the W/MODM_OPEN/MXM_OPEN message to the winmm drivers
(WAVEOOPENDESC is not even documented for MS-Windows (not CE) anymore).

http://msdn.microsoft.com/en-us/library/ff537518%28v=vs.85%29.aspx MIDIOPENDESC

IMHO, it would make a lot of sense if the structure remained allocated
for the whole lifetime of the open/close cycle, so the driver need not make a 
copy of it.

Is there anybody who knows more about this topic?

Thank you,
 Jörg Höhle



Re: kernel32: Implement and test GetVolumePathNamesForVolumeName. (try 2)

2011-03-16 Thread Alexandre Julliard
Hans Leidekker h...@codeweavers.com writes:

 +for (i = 0; i  output-NumberOfMountPoints; i++)
 +{
 +if (output-MountPoints[i].DeviceNameOffset)
 +{
 +const WCHAR *device = (const WCHAR *)((const char *)output + 
 output-MountPoints[i].DeviceNameOffset);
 +UINT device_len = output-MountPoints[i].DeviceNameLength / 
 sizeof(WCHAR);
 +int drive = map_dos_device( device, device_len );
 +
 +if (drive != -1)
 +{
 +len += 4;
 +if (volumepathname  len  buflen)
 +{
 +path[0] = 'A' + drive;
 +path[1] = ':';
 +path[2] = '\\';
 +path[3] = 0;
 +path += 4;
 +}
 +}
 +}

This won't allow you to support GUID volume names. I think you should
query all mount points that match the device, not just the DOS drives.
Either way you should use MOUNTMGR_QUERY_POINTS instead of trying every
drive one by one.

-- 
Alexandre Julliard
julli...@winehq.org




Re: windowscodecs: DibDecoder_CreateInstance() is unused so remove it.

2011-03-16 Thread Vincent Povirk
I think this will be needed by d3dx9, though it hasn't been fully wired up yet.




Re: d3dx9_36/tests: Replace a malloc() with HeapAlloc()+HeapFree().

2011-03-16 Thread Dylan Smith
On Wed, Mar 16, 2011 at 3:57 AM, Francois Gouget fgou...@free.fr wrote:

 Any reason why we were not freeing glyphmetrics_float?


No reason, just a mistake on my part.



Re: lifetime of the MIDI/MIXER/WAVEOPENDESC structure?

2011-03-16 Thread Maarten Lankhorst

Hey,

Op 16-03-11 16:03, joerg-cyril.hoe...@t-systems.com schreef:

Hi,

MSDN is silent about the lifetime of the MIDI/MIXER/WAVEOPENDESC structure
that is deliverred via the W/MODM_OPEN/MXM_OPEN message to the winmm drivers
(WAVEOOPENDESC is not even documented for MS-Windows (not CE) anymore).

http://msdn.microsoft.com/en-us/library/ff537518%28v=vs.85%29.aspx MIDIOPENDESC

IMHO, it would make a lot of sense if the structure remained allocated
for the whole lifetime of the open/close cycle, so the driver need not make a 
copy of it.

Is there anybody who knows more about this topic?
I wouldn't count on it, the structure is allocated on the stack, see for 
example winmm.c: WAVE_Open


Cheers,
Maarten




Re: winmm DriverCallback with 0 CALLBACK_WINDOW

2011-03-16 Thread Maarten Lankhorst

Hey,

Op 16-03-11 15:52, joerg-cyril.hoe...@t-systems.com schreef:

Hi,

Testbot job #9994 proves that Wine and native differ in their handling of a 0 
CALLBACK_WINDOW handle.
Wine's PostMessage redirects a 0 handle to PostThreadMessage(currentThreadID()),
while native finds no notification on the thread's queue in such a case.

(As a consequence, Wine's player thread will send notification messages to 
itself ...)
Considering PostThreadMessage(NULL) is supposed to post to the thread 
queue this is fine, feel free to fix though.



Alas, the test case does not allow to tell whether the difference in with
  - winmm:DriverCallback or
  - whether winmm:midiOutOpen sees the 0 handle and remap to CALLBACK_NULL 
internally,
before ever calling DriverCallback.

Likewise, a NULL CALLBACK_FUNCTION does not cause a crash since w2k,
but we don't know whether winmm:DriverCallback catches that case (as Wine does 
nowadays) or
whether winmm:wave/midi/mixer/Open remap that to maybe CALLBACK_NULL and 
proceed.

Is there any means to tell the difference, short of writing a real driver with
debug output and installing it on a native system, having native DriverCallback 
called directly?
In that case I wouldn't worry about it, just handle it in DriverCallback 
to save on duplication.



BTW, why does winealsa.drv:mixer use a custom callback mechanism instead of the
generic DriverCallback that the other winmm drivers use? Historical reasons 
only?
I honestly can't remember. Probably because I only checked with 
sndvol32, feel free to send in a patch for it though.


Cheers,
Maarten




re: kernel32: CreateProcessA should not call CreateProcessW directly

2011-03-16 Thread Dan Kegel
Does that work when compiling with -O3 ?
Maybe you need a noinline attribute,
http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#Function-Attributes




Re: kernel32: CreateProcessA should not call CreateProcessW directly

2011-03-16 Thread Maarten Lankhorst

Hi Dan,

Op 16-03-11 20:06, Dan Kegel schreef:

Does that work when compiling with -O3 ?
Maybe you need a noinline attribute,
http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#Function-Attributes


I don't think it will ever be inlined because of the calling convention 
differences. Doing a dumb -O3 to be sure confirms it.


Cheers,
Maarten.




Re: wined3d/device: Avoid repeated calculations of idx and shift in IWineD3DDeviceImpl_MarkStateDirty(). (resend)

2011-03-16 Thread Alexandre Julliard
Adam Martinson amartin...@codeweavers.com writes:

 On 03/16/2011 02:24 PM, Alexandre Julliard wrote:
 Adam Martinsonamartin...@codeweavers.com  writes:

 Look at any d3d app with oprofile.  That function is called
 EVERYWHERE.  In my testing this reduces
 IWineD3DDeviceImpl_MarkStateDirty() from 4.8% of wined3d CPU time to
 3.3%.
 What compiler are you using?  I don't see any difference here.

 GCC 4.4.5, running the 3DMark06 batch size tests.

I don't see any difference with 4.4.5 either, the generated code is
basically identical. If gcc really doesn't notice the loop invariant for
you, something is wrong with your setup.

-- 
Alexandre Julliard
julli...@winehq.org




Re: mshtml,shdocvw: Initialize OLEINPLACEFRAMEINFO.cb for IOleInPlaceSite::GetWindowContext (try 2)

2011-03-16 Thread Dmitry Timoshkov
Thomas Faber thfa...@gmx.de wrote:

  ip_frame = NULL;
  ip_uiwindow = NULL;
 +frame_info.cb = sizeof(OLEINPLACEFRAMEINFO);

Using sizeof(frame_info) here and in other places instead of 
sizeof(OLEINPLACEFRAMEINFO)
would be better IMHO.

-- 
Dmitry.