Re: Multimedia Control Panel question

2005-04-17 Thread Eric Pouech
Paul van Schayck a écrit :
Hey Robert,
On Apr 12, 2005 7:15 AM, Robert Reif [EMAIL PROTECTED] wrote:
The proper way to set the default sound card is to use the same
registry keys as Windows and either use a native mmsys.cpl or
devise a wine specific way of doing the same thing.
Creating a builtin  mmsys.cpl is one way of accomplishing this
and another way is to add this capability to winecfg.  You could
also have winecfg launch mmsys.cfg (native or builtin).
Any ideas on what would be the best way for wine?

Just a single registry entry like Windows does is not going to work I
think. We need at least a third to specify the sound system. We
already do that but what prevents us from stop using Wine\Config and
move the sound driver and sound device entries to
HKCU\Software\Microsoft\Multimedia\Sound Mapper?
In my mind the best solution to all of our sound device selection
problems would be to have winecfg handle the frontend. And drop
especially the dsound and alsa specific selection methods in the
config file.
Winecfg would offer the list of drivers. Each driver would detect the
devices available. Winecfg would get the list of devices with
waveOutGetDevCaps so we can keep device detection methods out of
winecfg.
Optionally we offer a text input field for those drivers where we can
not discover all devices.
Winecfg would then store the driver and device (ID or name?) in
Multimedia\Sound Mapper.
Sounds doable?
Paul

there are two different things here:
- how to install devices
- how to select the default device (when multiple are installed)
the second item should be done as it's done on windows, thru the control panel. 
That said, by default, when installing all MM devices, we should also set the 
default one (as the first one for example), or prompt the user thru the control 
panel to pick up the one he wants

A+
--
Eric Pouech



Re: Implementing get_default_drive_device under Solaris

2005-04-17 Thread Eric Pouech
Robert Lunnon a écrit :
I am trying to Implement get_default_drive_device for Solaris but its unclear 
to me what this is supposed to do. It get passed the links in 
~/.wine/dosdevices then tries to determine a mount point for them. Reading 
the Linux code the function only seems to return a mount point if the 
dosdevices link actually points at a directory something is mounted on. Is 
this what is supposed to happen, or is it supposed to find the device that 
the symlinks target directory  actually resides on ?

Bob
it's supposed to return the path to the device where is mounted (or could be 
mounted) the directory of name 'root' (so your second option in your mail).

A+
--
Eric Pouech



Re: NtMapViewOfSection - Chasing more holes

2005-04-17 Thread Robert Lunnon
On Sun, 17 Apr 2005 03:38 pm, Robert Lunnon wrote:
 NtMapView of Section is returning bad values from the wineserver calls
 trace:virtual:MapViewOfFileEx Mapping Section View handle=58, pid=,
 addr=0 zbits=0 commit=0, offs_l=0 offs_h=0 count=0
 trace:virtual:NtMapViewOfSection handle=58 process= addr=0
 off=0 size=0 access=4
 View: 7f64 - 7f640fff (anonymous)
   7f64 - 7f640fff c-rw-
 trace:virtual:NtMapViewOfSection handle=58 size=1000 offset=0
 trace:virtual:MapViewOfFileEx Mapping Section View handle=78, pid=,
 addr=0 zbits=0 commit=0, offs_l=0 offs_h=0 count=0
 trace:virtual:NtMapViewOfSection handle=78 process= addr=0
 off=0 size=0 access=2

 Breakpoint 2, NtMapViewOfSection (handle=0x78, process=0x,
 addr_ptr=0x7fd8ed48, zero_bits=0, commit_size=0, offset=0x7fd8ed1c,
 size_ptr=0x7fd8ed44, inherit=ViewShare, alloc_type=0, protect=2) at
 virtual.c:1737
 1737ERR(Sizes larger than 4Gb not supported\n);

 (gdb) disp base
 1: base = (void *) 0x0
 (gdb) disp header_size
 2: header_size = 0
 (gdb) disp size_high
 3: size_high = 74960
 (gdb) disp size_low
 4: size_low = 77824
 (gdb) disp res
 5: res = 0
 (gdb)

 This doesn't seem right to me.


 Bob

Well here I am talking to myself

For those that care I have locaed this problem to this code in 
server/mapping.c function get_file_size()

*size_high = st.st_size  32;

it seems gcc gets this wrong when sizeof(st.st_size) == 4 

This following code fixes the problem
 
*size_high= (sizeof(st.st_size) 4) ?  (st.st_size  32) : 0;




Re: NtMapViewOfSection - Chasing more holes

2005-04-17 Thread Dmitry Timoshkov
Robert Lunnon [EMAIL PROTECTED] wrote:

 Breakpoint 2, NtMapViewOfSection (handle=0x78, process=0x, 
 addr_ptr=0x7fd8ed48, zero_bits=0, commit_size=0, offset=0x7fd8ed1c,
 size_ptr=0x7fd8ed44, inherit=ViewShare, alloc_type=0, protect=2) at 
 virtual.c:1737
 1737ERR(Sizes larger than 4Gb not supported\n);
 
 (gdb) disp base
 1: base = (void *) 0x0
 (gdb) disp header_size
 2: header_size = 0
 (gdb) disp size_high
 3: size_high = 74960
 (gdb) disp size_low
 4: size_low = 77824
 (gdb) disp res
 5: res = 0
 (gdb)
 
 This doesn't seem right to me.

Is that with current CVS? Line number indicates that it is not.

-- 
Dmitry.




Re: Make VIRTUAL_SetFaultHandler an internal function

2005-04-17 Thread Rob Shearman
Dimitrie O. Paun wrote:
On Thu, Apr 14, 2005 at 03:05:36PM +0200, Alexandre Julliard wrote:
 

Actually it should be possible to handle the fault using a vectored
handler, without requiring internal functions at all.
   

Completely untested (what do people use to test DIB handling?),
but it compiles. Is something like this what you had it mind?
 


+/***
+ *   mem_area_add
+ *
+ * Adds a memory area to the list.
+ *
+ * PARAMS
+ *  base  [I] Beginning address of the area
+ *  size  [I] Size of the area
+ *  data  [I] Data associated with the area
+ *
+ */
+static struct mem_area *mem_area_add( const void *base, UINT size, void *data )
+{
+struct mem_area *area;
+
+EnterCriticalSection( csMemAreas );
+
+area = HeapAlloc(GetProcessHeap(), 0, sizeof(*area));
 

You can put the HeapAlloc outside of the critical section.
+if (area)
+{
+area-base = base;
+area-size = size;
+area-data = data;
+list_add_head( mem_areas_list, area-entry );
+}
+
+LeaveCriticalSection( csMemAreas );
+
+return area;
+}
+
+
+/***
+ *   mem_area_del
+ *
+ * Removes a memory area from the list.
+ *
+ * PARAMS
+ *  addr  [I] Address
+ *
+ * RETURNS
+ *  Success: TRUE
+ *  Failure: FALSE
+ */
+static BOOL mem_area_del( const void *addr )
+{
+struct mem_area *area;
+
+EnterCriticalSection( csMemAreas );
+area = mem_area_find( addr );
+if (area) list_remove( area-entry );
+LeaveCriticalSection( csMemAreas );
 

Why don't you free area here?
+
+return area != NULL;
+}
+
+
/* 
  Some of the following helper functions are duplicated in
  dlls/gdi/dib.c
 

Rob


How to implement a callback function

2005-04-17 Thread luis lenders
Hi , i would like to implement this function:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_cappreview.asp
Here fpProc is a pointer to the preview callback
function
Applications use this to get access to the videodata.
Right now i already have a preview window.

If i'm correct it is similar to this
function:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_capvideostreamcallback.asp

Here the structure LPVIDEOHDR lpVHdr contains the
information about the videodata. My question is how
all of this could be implemented; right now i have :

case WM_CAP_SET_CALLBACK_FRAME:
LPVIDEOHDR lpVideoHdr; //defined in vfw.h
typedef LRESULT (CALLBACK * CAPVIDEOCALLBACK)(HWND
hwnd, LPVIDEOHDR lpVideoHdr);
CAPVIDEOCALLBACK *framecallback = (CAPVIDEOCALLBACK
*)lParam;

{so what goes here? }



return TRUE;
break;

So how could i pass the data in lpVideoHdr to the
application? Any help appreciated  as i'm still quite
a beginner in this :)

Regards

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



Re: Make VIRTUAL_SetFaultHandler an internal function

2005-04-17 Thread Dimitrie O. Paun
On Sun, Apr 17, 2005 at 08:44:57AM -0500, Rob Shearman wrote:
 Why don't you free area here?

Details, details. But if you insist ... :)


Index: dlls/ntdll/ntdll.spec
===
RCS file: /var/cvs/wine/dlls/ntdll/ntdll.spec,v
retrieving revision 1.175
diff -u -p -r1.175 ntdll.spec
--- dlls/ntdll/ntdll.spec   30 Mar 2005 10:22:51 -  1.175
+++ dlls/ntdll/ntdll.spec   17 Apr 2005 04:18:44 -
@@ -1035,4 +1035,3 @@
 @ cdecl MODULE_DllThreadAttach(ptr)
 @ cdecl MODULE_GetLoadOrderW(ptr wstr wstr)
 @ cdecl VERSION_Init(wstr)
-@ cdecl VIRTUAL_SetFaultHandler(ptr ptr ptr)
Index: dlls/ntdll/virtual.c
===
RCS file: /var/cvs/wine/dlls/ntdll/virtual.c,v
retrieving revision 1.46
diff -u -p -r1.46 virtual.c
--- dlls/ntdll/virtual.c22 Feb 2005 19:33:50 -  1.46
+++ dlls/ntdll/virtual.c17 Apr 2005 04:20:14 -
@@ -1098,25 +1104,6 @@ void virtual_init(void)
 
 
 /***
- *   VIRTUAL_SetFaultHandler
- */
-BOOL VIRTUAL_SetFaultHandler( LPCVOID addr, HANDLERPROC proc, LPVOID arg )
-{
-FILE_VIEW *view;
-BOOL ret = FALSE;
-
-RtlEnterCriticalSection( csVirtual );
-if ((view = VIRTUAL_FindView( addr )))
-{
-view-handlerProc = proc;
-view-handlerArg  = arg;
-ret = TRUE;
-}
-RtlLeaveCriticalSection( csVirtual );
-return ret;
-}
-
-/***
  *   VIRTUAL_HandleFault
  */
 DWORD VIRTUAL_HandleFault( LPCVOID addr )
Index: dlls/x11drv/dib.c
===
RCS file: /var/cvs/wine/dlls/x11drv/dib.c,v
retrieving revision 1.35
diff -u -p -r1.35 dib.c
--- dlls/x11drv/dib.c   14 Apr 2005 12:48:31 -  1.35
+++ dlls/x11drv/dib.c   17 Apr 2005 15:10:03 -
@@ -38,11 +38,32 @@
 #include winbase.h
 #include wingdi.h
 #include x11drv.h
+#include excpt.h
+#include wine/list.h
 #include wine/debug.h
 
 WINE_DEFAULT_DEBUG_CHANNEL(bitmap);
 WINE_DECLARE_DEBUG_CHANNEL(x11drv);
 
+struct mem_area
+{
+struct list   entry;   /* Entry in global mem area list */
+const void   *base;/* Base address */
+UINT  size;/* Size in bytes */
+void *data;/* Data associated with this area */
+};
+
+static struct list mem_areas_list = LIST_INIT(mem_areas_list);
+
+static CRITICAL_SECTION csMemAreas;
+static CRITICAL_SECTION_DEBUG csMemAreas_debug =
+{
+0, 0, csMemAreas,
+{ csMemAreas_debug.ProcessLocksList, csMemAreas_debug.ProcessLocksList },
+  0, 0, { 0, (DWORD)(__FILE__ : csMemAreas) }
+};
+static CRITICAL_SECTION csMemAreas = { csMemAreas_debug, -1, 0, 0, 0, 0 };
+
 static int ximageDepthTable[32];
 
 /* This structure holds the arguments for DIB_SetImageBits() */
@@ -88,6 +109,89 @@ static INT X11DRV_DIB_Coerce(X_PHYSBITMA
 static INT X11DRV_DIB_Lock(X_PHYSBITMAP *,INT,BOOL);
 static void X11DRV_DIB_Unlock(X_PHYSBITMAP *,BOOL);
 
+/***
+ *   mem_area_find
+ *
+ * Find the memory area containing a given address. 
+ * The csMemAreas section must be held by caller.
+ *
+ * PARAMS
+ *  addr  [I] Address
+ *
+ * RETURNS
+ *  Success: area
+ *  Failure: NULL
+ */
+static struct mem_area *mem_area_find( const void *addr )
+{
+struct list *ptr;
+
+LIST_FOR_EACH( ptr, mem_areas_list )
+{
+struct mem_area *area = LIST_ENTRY( ptr, struct mem_area, entry );
+if (area-base  addr) break;
+if ((const char*)addr  (const char*)area-base + area-size) return 
area;
+}
+return NULL;
+}
+
+/***
+ *   mem_area_add
+ *
+ * Adds a memory area to the list.
+ *
+ * PARAMS
+ *  base  [I] Beginning address of the area
+ *  size  [I] Size of the area
+ *  data  [I] Data associated with the area
+ *
+ */
+static struct mem_area *mem_area_add( const void *base, UINT size, void *data )
+{
+struct mem_area *area;
+
+area = HeapAlloc(GetProcessHeap(), 0, sizeof(*area));
+if (!area) return NULL;
+
+area-base = base;
+area-size = size;
+area-data = data;
+
+EnterCriticalSection( csMemAreas );
+list_add_head( mem_areas_list, area-entry );
+LeaveCriticalSection( csMemAreas );
+
+return area;
+}
+
+
+/***
+ *   mem_area_del
+ *
+ * Removes a memory area from the list.
+ *
+ * PARAMS
+ *  addr  [I] Address
+ *
+ * RETURNS
+ *  Success: TRUE
+ *  Failure: FALSE
+ */
+static BOOL mem_area_del( const void *addr )
+{
+struct mem_area *area;
+
+EnterCriticalSection( csMemAreas );
+area = mem_area_find( addr );
+if (area) list_remove( area-entry );
+

Re: NT4 gdi test fix

2005-04-17 Thread Dmitry Timoshkov
Jakob Eriksson [EMAIL PROTECTED] wrote:

 As per:
 
 http://test.winehq.org/data/200504141000/nt4_IDWASEMPTY/gdi32:gdiobj.txt
 
 MSDN shows:
 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/devcons_912s.asp
 
 Explanation: the struct defined when the test is compiled may have 
 records not present
 in earlier versions of Windows.

Hmm, which records were added into LOGFONT structure after NT4?

That would make the generated.c, test_pack_LOGFONTA() fail as well?

-- 
Dmitry.




Re: Make VIRTUAL_SetFaultHandler an internal function

2005-04-17 Thread Dmitry Timoshkov
Dimitrie O. Paun [EMAIL PROTECTED] wrote:

 +struct mem_area
 +{
 +struct list   entry;   /* Entry in global mem area list */
 +const void   *base;/* Base address */
 +UINT  size;/* Size in bytes */
 +void *data;/* Data associated with this area */
 +};

One more nitpick: it's better to change the size type to SIZE_T from UINT
to allow 64-bit size memory allocations on (future) Win64.

-- 
Dmitry.




Re: Make VIRTUAL_SetFaultHandler an internal function

2005-04-17 Thread Dimitrie O. Paun
On Mon, Apr 18, 2005 at 12:29:07AM +0900, Dmitry Timoshkov wrote:
 Dimitrie O. Paun [EMAIL PROTECTED] wrote:
 
  +struct mem_area
  +{
  +struct list   entry;   /* Entry in global mem area list */
  +const void   *base;/* Base address */
  +UINT  size;/* Size in bytes */
  +void *data;/* Data associated with this area */
  +};
 
 One more nitpick: it's better to change the size type to SIZE_T from UINT
 to allow 64-bit size memory allocations on (future) Win64.

Yeah, and on second thought even this mem_area is too general because
they are build specifically for DIBs. I should rename them dib_area,
and instead of void *data, I should have X_PHYSBITMAP *physBitmap.

But I'd like to hear from AJ is this is OK first :)

-- 
Dimi.



Re: NT4 gdi test fix

2005-04-17 Thread Hans Leidekker
On Sunday 17 April 2005 17:22, Dmitry Timoshkov wrote:

 Hmm, which records were added into LOGFONT structure after NT4?

 That would make the generated.c, test_pack_LOGFONTA() fail as well?

I don't think so, the generated tests are compile-time tests,
ie the outcome depends on the headers (and compiler) used 
during compilation. It doesn't matter what OS version you 
run them on.

 -Hans



Re: NT4 gdi test fix

2005-04-17 Thread Dmitry Timoshkov
Hans Leidekker [EMAIL PROTECTED] wrote:

  Hmm, which records were added into LOGFONT structure after NT4?
 
  That would make the generated.c, test_pack_LOGFONTA() fail as well?
 
 I don't think so, the generated tests are compile-time tests,
 ie the outcome depends on the headers (and compiler) used 
 during compilation. It doesn't matter what OS version you 
 run them on.

Right, but that doesn't answer the first question.

-- 
Dmitry.




Re: How to implement a callback function

2005-04-17 Thread Eric Pouech
luis lenders a écrit :
Hi , i would like to implement this function:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_cappreview.asp
Here fpProc is a pointer to the preview callback
function
Applications use this to get access to the videodata.
Right now i already have a preview window.
If i'm correct it is similar to this
function:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_capvideostreamcallback.asp
Here the structure LPVIDEOHDR lpVHdr contains the
information about the videodata. My question is how
all of this could be implemented; right now i have :
case WM_CAP_SET_CALLBACK_FRAME:
LPVIDEOHDR lpVideoHdr; //defined in vfw.h
typedef LRESULT (CALLBACK * CAPVIDEOCALLBACK)(HWND
hwnd, LPVIDEOHDR lpVideoHdr);
CAPVIDEOCALLBACK *framecallback = (CAPVIDEOCALLBACK
*)lParam;
{so what goes here? }

return TRUE;
break;
So how could i pass the data in lpVideoHdr to the
application? Any help appreciated  as i'm still quite
a beginner in this :)
it seems that you open somehow a capture session.
Within this session, you can set a user defined callback to be passed every 
frame captured.
On the WM_CAP_SET_CALLBACK_FRAME message, your session should store the pointer 
to the function in the session data (you should have something for that somewhere).
Everytime you complete the capture of a frame in a given session, and this 
callback has been defined, then you should call it (by passing the current 
LPVIDEOHDR which is likely to be the structure to contain the data for the 
captured frame).
HTH
A+
--
Eric Pouech




Re: Implementing get_default_drive_device under Solaris

2005-04-17 Thread Robert Lunnon
On Sun, 17 Apr 2005 06:48 pm, Eric Pouech wrote:
 Robert Lunnon a écrit :
  I am trying to Implement get_default_drive_device for Solaris but its
  unclear to me what this is supposed to do. It get passed the links in
  ~/.wine/dosdevices then tries to determine a mount point for them.
  Reading the Linux code the function only seems to return a mount point if
  the dosdevices link actually points at a directory something is mounted
  on. Is this what is supposed to happen, or is it supposed to find the
  device that the symlinks target directory  actually resides on ?
 
  Bob

 it's supposed to return the path to the device where is mounted (or could
 be mounted) the directory of name 'root' (so your second option in your
 mail).

 A+

Then 
if (stat( entry-mnt_mountp, st ) == -1) continue;
if (st.st_dev != dev || st.st_ino != ino) continue;

should be
   if (stat( entry-mnt_mountp, st ) == -1) continue;
if (st.st_dev != dev) continue;

SInce currently the code is looking for the dev AND inode of the target of the 
link to be the same as the mount directory of a filesystem ?


Bob



Re: NtMapViewOfSection - Chasing more holes

2005-04-17 Thread Robert Lunnon
On Sun, 17 Apr 2005 10:32 pm, Dmitry Timoshkov wrote:
 Robert Lunnon [EMAIL PROTECTED] wrote:
  Breakpoint 2, NtMapViewOfSection (handle=0x78, process=0x,
  addr_ptr=0x7fd8ed48, zero_bits=0, commit_size=0, offset=0x7fd8ed1c,
  size_ptr=0x7fd8ed44, inherit=ViewShare, alloc_type=0, protect=2) at
  virtual.c:1737
  1737ERR(Sizes larger than 4Gb not supported\n);
 
  (gdb) disp base
  1: base = (void *) 0x0
  (gdb) disp header_size
  2: header_size = 0
  (gdb) disp size_high
  3: size_high = 74960
  (gdb) disp size_low
  4: size_low = 77824
  (gdb) disp res
  5: res = 0
  (gdb)
 
  This doesn't seem right to me.

 Is that with current CVS? Line number indicates that it is not.

Its from about a week ago, but the problem has been solved, gcc doesn't make 
x32 = 0 where x is a 32 bit number.



Re: NT4 gdi test fix

2005-04-17 Thread Hans Leidekker
On Sunday 17 April 2005 18:16, Dmitry Timoshkov wrote:

 Right, but that doesn't answer the first question.

Just checked Wine's LOGFONTA against MSVC 5 (timestamps
on the include files are from 1996): no differences.

 -Hans



Calc

2005-04-17 Thread [EMAIL PROTECTED]
I've ported M$ Calc using winelib. 
Is this program needed for wine?
-- 
Linux forever


pgpxYWp9IWSlR.pgp
Description: PGP signature


Re: Still more fun?

2005-04-17 Thread Rolf Kalbermatter
Steven Edwards [EMAIL PROTECTED] wrote:

I think it would be good in testing Wine/ReactOS vs Windows for Winelib
applications developers.
You can make a dummy file in your application directory called
application.exe.local to force
Windows to use the dlls in the local directory. So say you have
IEXPLORE.EXE you would create
IEXPLORE.EXE.LOCAL and drop the Mingw compiled dlls in to the
application folder and see how
it runs.

Why would you need the .local file? Has there anything changed in XP or
2003 which would
prefer Windows or system DLLs over local DLLs in the same directory as
the calling executable?

I always was under the impression that the executable directory was the
first to be searched by LoadLibrary() for a DLL and it has worked that
way for me in the past, too.

Rolf Kalbermatter




Re: Calc

2005-04-17 Thread Shachar Shemesh
[EMAIL PROTECTED] wrote:
I've ported M$ Calc using winelib. 
Is this program needed for wine?
 

Did you port it, or reimplemented it? Porting means taking the original 
source and compiling it using winelib. As calc is a MS intellectual 
property, we would very much prefer it if you did not post it to Wine, 
or even got it anywhere near us.

If you wrote your own version of Calc it may be an amusing thing to add 
to Wine. We have a minesweeper clone, after all, and I'm sure that the 
reactos guys would appreciate it.

Shachar
--
Shachar Shemesh
Lingnu Open Source Consulting ltd.
Have you backed up today's work? http://www.lingnu.com/backup.html



Re: Implementing get_default_drive_device under Solaris

2005-04-17 Thread Eric Pouech

if (stat( entry-mnt_mountp, st ) == -1) continue;
if (st.st_dev != dev || st.st_ino != ino) continue;
should be
   if (stat( entry-mnt_mountp, st ) == -1) continue;
if (st.st_dev != dev) continue;
SInce currently the code is looking for the dev AND inode of the target of the 
link to be the same as the mount directory of a filesystem ?
you don't want to manipulate as a device if the root of the disk in Win32 isn't 
at the mount point (in Unix world), hence the test on the inode.

A+
--
Eric Pouech



Moved emails

2005-04-17 Thread Dustin Navea
Hey everyone I have moved to a gmail account, since they offer free
POP access.  I have 49 invites left if anyone wants an account, I am
in the process of manually forwarding all of my emails from Yahoo to
GMail, and saving to get a 2nd computer so I can have a dedicated
linux box to come back here on..

-Dustin




MSN Webcam patch (New: Now WITH Completely randomly transmitted images)

2005-04-17 Thread Maarten Lankhorst
SInce stuff is missing from msvideo (ICSeqCompressFrame{Start,,Stop}) 
you have to use native MSVFW32.DLL

This will crash when you stop msn webcam (Because of the CreateThread 
continuing to run)
In general it is very unstable, but at least it proves you can use 
'webcam's under wine.

How does it work?
apply patch
set quartz, qcap and devenum to builtin (qcap just to be sure..)
set msvfw32 to native (and make sure you have a native msvfw32)
regsvr32 quartz.dll
Run msn messenger (I tested it with MSN 6.2, dutch version, not sure 
wether it will work under 7.0)
Now you can use the 'webcam'

If you want, you can even make some patterns by changing the following 
lines in capture.c ;)
 for (pl0ink = 0;pl0ink  320*240*3;pl0ink++)
myData[pl0ink] = (BYTE) (rand() % 256);

This patch is not very stable yet, but it's still a work in progress..
If anyone got some links to gstreamer tutorials that would help me with 
this, I would happily accept :)
diff -Nru wine-old/dlls/devenum/createdevenum.c 
wine-new/dlls/devenum/createdevenum.c
--- wine-old/dlls/devenum/createdevenum.c   2005-01-25 11:56:39.0 
+0100
+++ wine-new/dlls/devenum/createdevenum.c   2005-04-15 21:23:47.0 
+0200
@@ -117,6 +117,7 @@
 
 if (IsEqualGUID(clsidDeviceClass, CLSID_AudioRendererCategory) ||
 IsEqualGUID(clsidDeviceClass, CLSID_AudioInputDeviceCategory) ||
+IsEqualGUID(clsidDeviceClass, CLSID_VideoInputDeviceCategory) ||
 IsEqualGUID(clsidDeviceClass, CLSID_MidiRendererCategory))
 {
 hbasekey = HKEY_CURRENT_USER;
@@ -142,6 +143,7 @@
 {
 if (IsEqualGUID(clsidDeviceClass, CLSID_AudioRendererCategory) ||
 IsEqualGUID(clsidDeviceClass, CLSID_AudioInputDeviceCategory) ||
+IsEqualGUID(clsidDeviceClass, CLSID_VideoInputDeviceCategory) ||
 IsEqualGUID(clsidDeviceClass, CLSID_MidiRendererCategory))
 {
  HRESULT hr = DEVENUM_CreateSpecialCategories();
@@ -413,6 +415,7 @@
 CoTaskMemFree(pTypes);
}
}
+res = DEVENUM_CreateAMCategoryKey(CLSID_VideoInputDeviceCategory);
 }
 
 if (pMapper)
diff -Nru wine-old/dlls/devenum/devenum_main.c 
wine-new/dlls/devenum/devenum_main.c
--- wine-old/dlls/devenum/devenum_main.c2004-12-07 15:37:11.0 
+0100
+++ wine-new/dlls/devenum/devenum_main.c2005-04-15 21:23:47.0 
+0200
@@ -122,7 +122,7 @@
{CLSID_AudioCompressorCategory, acmcat, TRUE},
{CLSID_VideoCompressorCategory, vidcat, TRUE},
{CLSID_LegacyAmFilterCategory, filtcat, TRUE},
-   {CLSID_VideoInputDeviceCategory, vfwcat, FALSE},
+   {CLSID_VideoInputDeviceCategory, vfwcat, TRUE},
{CLSID_AudioInputDeviceCategory, wavein, FALSE},
{CLSID_AudioRendererCategory, waveout, FALSE},
{CLSID_MidiRendererCategory, midiout, FALSE},
@@ -156,7 +156,7 @@
 
 pMapper = (IFilterMapper2*)mapvptr;
 
-IFilterMapper2_CreateCategory(pMapper, 
CLSID_VideoInputDeviceCategory, MERIT_DO_NOT_USE, friendlyvidcap);
+IFilterMapper2_CreateCategory(pMapper, 
CLSID_VideoInputDeviceCategory, MERIT_NORMAL, friendlyvidcap);
 IFilterMapper2_CreateCategory(pMapper, CLSID_LegacyAmFilterCategory, 
MERIT_NORMAL, friendlydshow);
 IFilterMapper2_CreateCategory(pMapper, CLSID_VideoCompressorCategory, 
MERIT_DO_NOT_USE, friendlyvidcomp);
 IFilterMapper2_CreateCategory(pMapper, 
CLSID_AudioInputDeviceCategory, MERIT_DO_NOT_USE, friendlyaudcap);
diff -Nru wine-old/dlls/msvideo/msvideo_main.c 
wine-new/dlls/msvideo/msvideo_main.c
--- wine-old/dlls/msvideo/msvideo_main.c2005-02-17 12:51:01.0 
+0100
+++ wine-new/dlls/msvideo/msvideo_main.c2005-04-17 20:35:19.0 
+0200
@@ -1132,7 +1132,7 @@
 }
 
 /***
- *  ICSeqCompressFrameEnd   [EMAIL PROTECTED]
+ *  ICSeqCompressFrameStart [EMAIL PROTECTED]
  */
 BOOL VFWAPI ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn)
 {
diff -Nru wine-old/dlls/quartz/capture.c wine-new/dlls/quartz/capture.c
--- wine-old/dlls/quartz/capture.c  1970-01-01 01:00:00.0 +0100
+++ wine-new/dlls/quartz/capture.c  2005-04-17 17:32:58.0 +0200
@@ -0,0 +1,166 @@
+/* DirectShow capture services (QUARTZ.DLL)
+ *
+ * Copyright 2005 Maarten Lankhorst
+ *
+ * This file contains the (internal) driver registration functions,
+ * driver enumeration APIs and DirectDraw creation functions.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 

Re: Calc

2005-04-17 Thread Thomas Weidenmueller
Shachar Shemesh wrote:
We have a minesweeper clone, after all, and I'm sure that the 
reactos guys would appreciate it.
Actually, we've had a calculator since 11/2004, it's located in 
subsys/system/cmd...

Best Regards,
Thomas


RE: How to implement a callback function

2005-04-17 Thread Rolf Kalbermatter
luis lenders wrote:

As to the title, avicap32 won't implement the callback function, but
your
application will do that. avicap32 only will call it.
 
Hi , i would like to implement this function:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multim
ed/htm/_win32_cappreview.asp

Well this function (or rather a macro) is only to enable or disable the
preview
mode. There isn't any callback function I can see here. It is rather
about a preview
of the actual capture data in the capture window itself. You can install
a frame
callback with capSetCallbackOnFrame() and this callback function will be
called
for every frame BEFORE it is diplayed in the preview.

Here fpProc is a pointer to the preview callback function
Applications use this to get access to the videodata.
Right now i already have a preview window.

If i'm correct it is similar to this
function:http://msdn.microsoft.com/library/default.asp?
url=/library/en-us/multimed/htm/_win32_capvideostreamcallback.asp

As far as I understand it, the preview callback as you call it is rather
installed
by the capSetCallbackOnFrame() macro and ultimately by the
WM_CAP_SET_CALLBACK_FRAME
message. MSDN doesn't directly specify the actual callback prototype of
this callback,
but it if you search further you can see that the
capVideoStreamCallback() prototype
is both used for the WM_CAP_SET_CALLBACK_FRAME and
WM_CAP_SET_CALLBACK_VIDEOSTREAM
callbacks.

Here the structure LPVIDEOHDR lpVHdr contains the
information about the videodata. My question is how
all of this could be implemented; right now i have :

case WM_CAP_SET_CALLBACK_FRAME:
 {
 ^^
You can only declare variables in standard C at the beginning of a block
and since
Wine has to be compilable in standard C you need to add curly braces
before you can
declare variables.
   LPVIDEOHDR lpVideoHdr; //defined in vfw.h
   typedef LRESULT (CALLBACK * CAPVIDEOCALLBACK)(HWND hwnd, LPVIDEOHDR
lpVideoHdr);
   CAPVIDEOCALLBACK *framecallback = (CAPVIDEOCALLBACK*)lParam;

You need to store this callback function pointer somewhere in the
capture window.
This could be done by adding the callback pointers to the structure
which holds
all the different runtime parameters for the capture process, such as
the CAPSTATUS,
CAPPARAMS, CAPDRIVERCAPS and probably some more but private data etc
structures.
The pointer to this whole structure will be probably added to the
capture window
as an ATOM or maybe (but probably less preferable) as user data.

{so what goes here? }

Not much more than what I explained above. The message loop of your
capture window
will then have to check for every incoming frame if frame callback is
set to on
(non-NULL) and in that case call the saved callback pointer with the
actual data.

So how could i pass the data in lpVideoHdr to the
application? Any help appreciated  as i'm still quite
a beginner in this :)

You won't do that in the WM_CAP_SET_CALLBACK_FRAME message handler.
Rather your
message loop will have to do some idle processing, such as generating a
regular
WM_something message in which the external video data is read in and
then all the
necessary processing is done such as passing the captured data to the
frameCallback
if that is enabled, then doing the preview or overlay operation if on,
and after
that pass the data to the videoStreamCallback etc.

But I think your major problem here is not the capSetPreview macro or
rather its
message implementation in the first place, but rather the fact that
avicap32.dll
is basically an empty placeholder in current wine. You will need to
implement
quite something more before you can even worry about capSetPreview().

Rolf Kalbermatter




Enabling Gecko in MSHTML

2005-04-17 Thread Jacek Caban
Hi.

Now MSHTML is ready for a patch that enables HTML rendering over
Gecko API. I attached the patch that makes IE works with Wine's MSHTML.
Any comments/suggestions are welcome. If you want to see how
it works, you need to have a working installation of IE and Mozilla
installed
under Wine. Then just set mshtml.dll to be loaded as built in. Excluding
many not implemented parts of API, it needs a better algorithm searching
for Mozilla installation (eg. currently it can't work with only Mozilla
ActiveX
Control installed) and better messaging user that it needs Mozilla, but
I'll fix it in next patches.

I'm not sure if I should presently send it to wine-patches. I still hope
we can make it
work with Linux versions of Mozilla. It would be much better as applications
could 'just run' for users that have Linux Mozilla installed (and most
have),
without any additional installation/downloading . I tried to do it, but
without success as yet. Problem is that we need to pass a native
window handle to
nsIBaseWindow::InitWindow (you may see this call in view.c). In case of
windows version it's no problem as it
means passing HWND, but in case of Linux it is Gtk/GdkWindow
(well, not always as Mozilla can be built to use xlib or qt, but
currently in most cases it's not and we can take care of it later).
To not use gtk/gdk directly in Wine we could patch Mozilla to detect
XID passed and use gdk_window_foreign_new to create GdkWindow.
It should work, I believe, but I was not able to do so. It would be
wonderful if
anyone could give me any insight on it, eg. I'm not sure if I have a
good understanding of how to get the XID for Wine's window. Also I'd
like to know if using gdk inside Wine's windows needs any
tricks/is possible. If you think I should give up and stay with the Windows
version, I'll send this patch to wine-patches.

Thanks,
Jacek
? dlls/mshtml/diff
? dlls/mshtml/nsapi.c
? dlls/mshtml/nsembd.c
? dlls/mshtml/nsiface.idl
? dlls/mshtml/tests
Index: dlls/mshtml/.cvsignore
===
RCS file: /home/wine/wine/dlls/mshtml/.cvsignore,v
retrieving revision 1.2
diff -u -p -r1.2 .cvsignore
--- dlls/mshtml/.cvsignore  24 Mar 2004 03:36:47 -  1.2
+++ dlls/mshtml/.cvsignore  17 Apr 2005 20:50:52 -
@@ -1,3 +1,4 @@
 Makefile
 mshtml.dll.dbg.c
 mshtml.spec.def
+nsiface.h
Index: dlls/mshtml/Makefile.in
===
RCS file: /home/wine/wine/dlls/mshtml/Makefile.in,v
retrieving revision 1.10
diff -u -p -r1.10 Makefile.in
--- dlls/mshtml/Makefile.in 14 Apr 2005 11:30:50 -  1.10
+++ dlls/mshtml/Makefile.in 17 Apr 2005 20:50:52 -
@@ -10,9 +10,12 @@ EXTRADEFS = -DCOM_NO_WINDOWS_H
 C_SRCS = \
htmldoc.c \
main.c \
+   nsembd.c \
oleobj.c \
persist.c \
view.c
+
+IDL_SRCS = nsiface.idl
 
 @MAKE_DLL_RULES@
 
Index: dlls/mshtml/htmldoc.c
===
RCS file: /home/wine/wine/dlls/mshtml/htmldoc.c,v
retrieving revision 1.6
diff -u -p -r1.6 htmldoc.c
--- dlls/mshtml/htmldoc.c   15 Apr 2005 16:12:45 -  1.6
+++ dlls/mshtml/htmldoc.c   17 Apr 2005 20:50:52 -
@@ -106,6 +106,7 @@ static ULONG WINAPI HTMLDocument_Release
 TRACE((%p) ref = %lu\n, This, ref);
 
 if(!ref) {
+NSContainer_Destroy(This-nscontainer);
 if(This-client)
 IOleClientSite_Release(This-client);
 if(This-ipsite)
@@ -949,6 +950,8 @@ HRESULT HTMLDocument_Create(IUnknown *pU
 hres = IHTMLDocument_QueryInterface(HTMLDOC(ret), riid, ppvObject);
 if(FAILED(hres))
 HeapFree(GetProcessHeap(), 0, ret);
+
+ret-nscontainer = NSContainer_Create(ret);
 
 HTMLDocument_Persist_Init(ret);
 HTMLDocument_OleObj_Init(ret);
Index: dlls/mshtml/main.c
===
RCS file: /home/wine/wine/dlls/mshtml/main.c,v
retrieving revision 1.9
diff -u -p -r1.9 main.c
--- dlls/mshtml/main.c  14 Apr 2005 11:30:50 -  1.9
+++ dlls/mshtml/main.c  17 Apr 2005 20:50:52 -
@@ -30,8 +30,6 @@
 #include windef.h
 #include winbase.h
 #include winuser.h
-#include winnls.h
-#include winreg.h
 #include ole2.h
 #include docobj.h
 
@@ -43,78 +41,16 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
 
-#include initguid.h
-
-DEFINE_GUID( CLSID_MozillaBrowser, 
0x1339B54C,0x3453,0x11D2,0x93,0xB9,0x00,0x00,0x00,0x00,0x00,0x00);
-
-typedef HRESULT (WINAPI *fnGetClassObject)(REFCLSID rclsid, REFIID iid, LPVOID 
*ppv);
-typedef BOOL (WINAPI *fnCanUnloadNow)();
-
-static HMODULE hMozCtl;
-
 HINSTANCE hInst;
 
-/* convert a guid to a wide character string */
-static void MSHTML_guid2wstr( const GUID *guid, LPWSTR wstr )
-{
-char str[40];
-
-sprintf(str, {%08lX-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X},
-   guid-Data1, guid-Data2, guid-Data3,
-   guid-Data4[0], guid-Data4[1], guid-Data4[2], guid-Data4[3],
- 

Re: How to implement a callback function

2005-04-17 Thread Rolf Kalbermatter
Eric Pouech [EMAIL PROTECTED] wrote:

luis lenders a écrit :

 So how could i pass the data in lpVideoHdr to the application? Any 
 help appreciated  as i'm still quite a beginner in this :)
it seems that you open somehow a capture session.

Within this session, you can set a user defined callback to be passed
every 
frame captured.
On the WM_CAP_SET_CALLBACK_FRAME message, your session should store the
pointer 
to the function in the session data (you should have something for that
somewhere).
Everytime you complete the capture of a frame in a given session, and
this 
callback has been defined, then you should call it (by passing the
current 
LPVIDEOHDR which is likely to be the structure to contain the data for
the 
captured frame).

I believe that the capture session is inherently tied to the capture
window
created with capCreateCaptureWindowA/W(). After all, the capture API
dates
back to Windows 3.x where it was common to do background processing by
delegating the action to a window message loop, since no other
multitasking
method was available. Maybe that 32bit Windows has another
implementation for
this, but I'm not sure.

Rolf Kalbermatter






Re: Calc

2005-04-17 Thread Martin Fuchs
 If you wrote your own version of Calc it may be an amusing thing to add 
 to Wine. We have a minesweeper clone, after all, and I'm sure that the 
 reactos guys would appreciate it.

Well, there is already a winecalc in ReactOS.
Has this new version some additional features?



Without debug when a program finish

2005-04-17 Thread Joaquín Fernández
I have a program and when i finish it (with click on X or in File-Exit), then 
ocurr an exception
and the debugger is on. I want when the program is finished the debugger don't 
start, and i can get
the console prompt again.

The program is functioning correctly, only when i finish the program i have 
problems, so i think
that must have an environment variable or an option for avoiding the debugger.

Regards

Joaquín

P.D.: Here is the messages when i close the application:

wine: Unhandled exception (thread 0009), starting debugger...
WineDbg starting on pid 0x8
Unhandled exception: page fault on write access to 0x0004 in 32-bit code 
(0x005e3e0e).
In 32 bit mode.
Register dump:
 CS:0073 SS:007b DS:007b ES:007b FS:003b GS:0033
 EIP:005e3e0e ESP:77a63b68 EBP:77a63b84 EFLAGS:00210202(   - 00  - -RI1)
 EAX:7f5701e0 EBX: ECX:0010 EDX:
 ESI:7f482e2c EDI:0004
Stack dump:
0x77a63b68:  7772ab90 77716560 7f482e30 7f570b34
0x77a63b78:   0e20 0010 77730aa0
0x77a63b88:  005dde5a 7f570098 7f482e3c 77b399d0
0x77a63b98:  005c3baa 7f482e30 0042473c 7f482e30
0x77a63ba8:  7f482e40 0053944a 77b28590 
0x77a63bb8:  77a63f20 77bb7a08 000a 
Backtrace:
=1 0x005e3e0e in bw600 (+0x1e3e0e) (0x77a63b84)
  2 0x005dde5a in bw600 (+0x1dde5a) (0x77730aa0)
  3 0x5d8930ec (0x83e58955)
  4 0x (0x)
0x005e3e0e: movl%ebx,0x4(%edx)
Wine-dbgquit



-- 
-BEGIN PGP PUBLIC KEY BLOCK-
Version: GnuPG v1.2.4 (GNU/Linux)

mQFCBEFI/gARAwDd2+ojasT3rCyRktSw+Ix3m+yoxSD0NkpMLlunmJxwvn6wKZVl
mDw76/Zu9mqDWWeSGdSl+60T7fDLrJZSEB45O9T5jdujj01GFeer7xuiuHBTFw8o
CXqD/hzhqYc46ecAoIQQjZ2qZtOWLPRBbegK/nyOIguNAv9QGiKPLBS8o0ksxEUp
EfLAExVmu6Zp693uKGf6XrBWNcLriuwRPr1mjy3N/bhMlqc3vcTeUBwxiUuX5h2P
NQgB3d2AbJS6oEvhmZL0Bn/8Ij/MSvVrartmCXuw9eSx0aMC/R7Kw9TtUfxFVUGx
fQKwoA9BXNElPLcNohbBS/fH87IMMxCJyn+rmTeNCEcUEQ7UgvVCdlzZ8+L4PdlH
qGR81nhZVEwPRnSSesLpSHRC1QQVoceBeb7PICr/b2eZiKMX+bQ+Sm9hcXXDrW4g
TWFudWVsIEZlcm7DoW5kZXogUXVpbGVzIDxqb2FxdWluQGNhc2FkZWFsYWJhbnph
Lm9yZz6IXgQTEQIAHgUCQUj+AAIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBH
677/q7xL4e15AJwNfSpeaXXMH2EjuKblfeBe51MrUgCcCP5jEnpXrDXLWULIW5yD
t6VdHlU=
=a8BM
-END PGP PUBLIC KEY BLOCK-



Re: Enabling Gecko in MSHTML

2005-04-17 Thread Ivan Leo Puoti
Jacek Caban wrote:
Hi.
Now MSHTML is ready for a patch that enables HTML rendering over
Gecko API.
Any chance this will work with the native unix gecko?
Ivan