- Revert parts of 51283, thanks to Giannis for setting me straight on SetCursorPos and without breaking setting the Track window for TrackMouseEvent. Pass the new SetCursorPos, and wine test_TrackMouseEvent and input test_mouse_ll_hook tests.
svn path=/trunk/; revision=51305
- Rewrite GetKeyState based on wine. Now it's results are based on whether or nor the message queue has processed a keyboard message and not the actual state of the keyboard.c
- TODO: ensure it works corectly and use this implementation in most other places in win32k when we need to check the state of a key. To ensure nothing breaks, this change affects only GetKeyState
svn path=/trunk/; revision=51295
- Fix more subtle bugs:
- Check with long line name if the current connection is activated when adding lines to dialog or when adding lines to the preferences dialog
- Use the temporary preferences context when writing the line settings
- Don't destroy the mixer when the preferences dialog is closed. the new mixer will be used for the application when the preferences are changed
- Pass the current selected line to the preferences dialog
svn path=/trunk/; revision=51292
- Only call hooks and check if Win32Thread is in cleanup if the windows procedure is being called.
- Set DispatchingListEntry.Flink to NULL. The real fix for bug 5580. This bug may be the cause of other crashes experienced by users just before loading desktop. Found by rafalh.
svn path=/trunk/; revision=51291
- Added more missed mouse injection flag and extra data being passed in and from set cursor position. Wine mouse low level hook msg tests now see it and check the validity of the hook message.
svn path=/trunk/; revision=51290
- Always write line states configuration values in one step
- Fixes the problem when old line state settings were not present
- Advantage is that it is faster and sndvol32 now works in ReactOS
svn path=/trunk/; revision=51286
- Polish translation by Adam "Saibman" Stachowicz
[SNDREC32]
- Polish translation by Adam "Saibman" Stachowicz
[SNDVOL32]
- Polish translation update by me
[TRANSLATION]
- Polish translation fixes (spelling, typos, grammar) and updates on multiple modules by Adam "Saibman" Stachowicz, few small corrections by me.
See issue #6087 for more details.
svn path=/trunk/; revision=51285
- Fix TrackMouseEvent! Keyboard and Mouse pass all the right flags. Update to accelerator code. Fixed recursion in global hooks. Hack-implement GetMouseMovePointsEx due to slack time and boredom, it passes the input tests but does nothing. Pass all the test_TrackMouseEvent!!! test_accelerators and test_menu_messages work too, so far no hangs.
svn path=/trunk/; revision=51283
- Fix incorrect prototypes and partially implement fast unsafe versions of activation context activation/deactivation, however disable them for now, until the new loader is in place.
- Fix their usage in the new loader code, which by mistake (which got copypasted into three other places) was passing a totally empty activation context to the activate function.
svn path=/trunk/; revision=51281
ExInitializePushLock takes a PEX_PUSH_LOCK as parameter, do it the same in the inline version instead of casting to PULONG_PTR everywhere
svn path=/trunk/; revision=51278
- Zero-initialize base address in BasepLoadLibraryAsDatafile. Should fix 2nd stage problems.
- Add a trace debugprint, silented by default.
See issue #6092 for more details.
svn path=/trunk/; revision=51277
- co_IntSendMessageWithCallBack: Insert the message into the messagequeue before attempting to wake the queue. Probably fixes bug 5580.
- Remove the use of MSQ_SENTNOWAIT that was used to determine if messagequeues needed dereferencing. Instead use the SenderQueue member of the message.
- Do not close the NewMessagesHandle member of the messagequeue in IntDereferenceMessageQueue.
The last reference on a messagequeue could be released by a thread belonging to a process other than the on that created the handle.
Also the creating process could already be long gone. Instead close this handle in MsqDestroyMessageQueue which is in the thread/process that created the handle. Problem noticed by smiley.
- Revert change done in 51254. James you are indeed correct.
Testing shows that the WM_PARENTNOTIFY message is not sent when the program is exiting.
svn path=/trunk/; revision=51275
- Implement retrieving current volume level and mute state and set the dialog controls on startup
- Remove last line separator from GUI
- Implement updating slider / switch control when another application modifies volume settings
- Implement writing current selected lines settings into registry when the preference dialog is closed
- Implement helper functions which receive / set volume level
- Sndvol32 is now fully functional and has been tested in Windows XP SP3
- TODO: implement support for setting volume balance (left - right slider)
- TODO: Resources have not yet been commited
svn path=/trunk/; revision=51274
- Finish the ldr.c rewrite. Properly implement LoadLibraryExW (which contained some good code pieces added by Alex). Implement BasepLoadLibraryAsDatafile, however it doesn't support redirection yet and a call to load alternate resource module is commented out (it's totally absent in the existing ntdll/ldr API now).
- Mark GetDllLoadPath as deprecated, should be removed when SearchPathW is rewritten (or at least, reviewed). The new function to use is BasepGetDllPath.
svn path=/trunk/; revision=51272
- Implement loading of resources and parsing the dialog template in memory
- Store the created windows in an array
- Implement destroying of controls when mixer is changed / line selection is altered
- Implement generating layout for each new line
- Implement setting line name
- Resources have not yet been commited
- Sndvol32 is not yet functional
svn path=/trunk/; revision=51271
- Rewrite most of kernel32 module loading APIs (except for LoadLibraryExW, for testing purposes it's gonna be committed in a separate commit). Rewritten parts include:
* Better definition of LOADPARMS32 structure for LoadModule, and rewritten LoadModule which is now a well structured function with proper parameters validation, proper work algorithm and setting proper last error values in failure cases. Optimization of allocating MAX_PATH buffer on stack instead of in the heap is saved from the old version of the function.
* LoadLibraryA, added a path-hack (present at least up to Windows 2003) for twain_32.dll loading (not that important, but still a compatibility issue).
* Make GetProcAddress() use BasepMapModuleHandle for mapping the passed-in handle (including properly handling NULL module handle which was incorrectly handled by the old implementation), and check for a special failure case when LdrGetProcedureAddress returns pointer to the image base address.
svn path=/trunk/; revision=51270
- Pass all the wine test_capture_1/2/3/4.
- Fix the menu tracking pop up hang issue by looking for deceased windows that pass on while in the start of tracking. This could be a fix for other wine tests.
- ReactOS is not Linux and wine is not enough!
svn path=/trunk/; revision=51265
- Implement LsaLookupNames2 in advapi32.dll.
- Implement LsarLookupNames3 in lsasrv.dll as a mock-up which returns a hard-coded user account (Administrator).
This fixes several wine tests.
svn path=/trunk/; revision=51257
- co_MsqDispatchOneSentMessage: After calling the windows procedure check if the message was a callback. If so place the message into the calling MessageQueue. Also check if the current MessageQueue is the calling MessageQueue in which case dont call the Windows procedure but call the callback routine. SendMessageCallback is now properly implemented.
- Remove the use of MSQ_SENTNOWAIT and instead use the SenderQueue and CallBackSenderQueue members to determine if the MessageQueues need to be dereferenced.
- Modify co_MsqSendMessage to accept more parameters so that it can handle Notification, Callback and Internal messages. These changes make this function more complex but removes duplicate code in messages.c and move the handling for all queued messages in one location.
- co_IntSendMessageWithCallBack: If the callback is for the same Message Queue, call it vice queuing it.
Insert the message into the MessageQueue before waking the thread to handle the message. Should fix bug 5580.
svn path=/trunk/; revision=51255
- Minor cleanup, better flag names (thanks to ProcessHacker team for the good names and values).
- Return error in failure path of BasepGetModuleHandleExW.
- Optimize GetModuleHandleExA so that it calls the internal routine directly, without going through GetModuleHandleExW first and thus validating parameters second time.
svn path=/trunk/; revision=51253
- Set Control variable to null, which prevents that mixer controls being assigned to another line when the current line does not have any controls. Bug was highlighted when opening the property window. In that case sndvol32 frees the previous setting, so all mixer lines are also getting freed including their controls, which caused a double free in the case the line did not have any controls assigned.
svn path=/trunk/; revision=51252
- Working on wine win test_capture_4, pass all the tests in test_capture_4_proc but still waiting forever in MenuTrackMenu:WaitMessage!
svn path=/trunk/; revision=51248