Re: Multimedia Control Panel question
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
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
Progman Implementation ?
Is the Wine implementation of the Program Manager complete ? When I start progman.exe I get a blank window with lots of errors about .BMPs. -- Andrew Beneath the noble bird Between the proudest words Behind the beauty, cracks appear Once with heads held high They sang out to the sky Why do their shadows bow in fear? Beneath, Between and Behind by Rush (Fly By Night, 1975) ---
Re: NtMapViewOfSection - Chasing more holes
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
"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
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
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
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) l
Re: NT4 gdi test fix
"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
"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
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
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
"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
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
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
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 x>>32 = 0 where x is a 32 bit number.
Re: NT4 gdi test fix
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
I've ported M$ Calc using winelib. Is this program needed for wine? -- Linux forever pgpxYWp9IWSlR.pgp Description: PGP signature
Re: Still more fun?
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
[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
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
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)
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 PART
Re: Calc
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
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
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->
Re: How to implement a callback function
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
> 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
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-dbg>quit -- -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
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