Re: Menu - loop of sending and receiving WM_TIMER

2005-04-18 Thread Alexandre Julliard
Jose Alonso <[EMAIL PROTECTED]> writes: > I think one possible solution to avoid this case is > the attached patch. (I think it's safe to remove > unconditionally a message that will be dispatched). Yes, that looks like a reasonable fix. -- Alexandre Julliard [EMAIL PROTECTED]

Re: Menu - loop of sending and receiving WM_TIMER

2005-04-15 Thread Jose Alonso
On Thu, 2005-04-14 at 20:44 +0200, Alexandre Julliard wrote: > > The WM_TIMER cannot "remain in the queue", it's never put there in the > first place, it's generated on the fly. If you really see a WM_TIMER > in the posted message queue, it's because someone has done a > PostMessage on it, and th

Re: Menu - loop of sending and receiving WM_TIMER

2005-04-14 Thread Alexandre Julliard
Jose Alonso <[EMAIL PROTECTED]> writes: > Yes, the first time that PeekMessage (1) is called, the timer message is > handled by find_expired_timer, but the timer is not restarted because > the parameter PM_NOREMOVE is set. > The WM_TIMER message remains in the queue, and next time the > PeekMessag

Re: Menu - loop of sending and receiving WM_TIMER

2005-04-14 Thread Jose Alonso
On Thu, 2005-04-14 at 19:49 +0200, Alexandre Julliard wrote: > WM_TIMER messages are not posted, so the message can't possibly be > removed by get_posted_message. It will be handled in > find_expired_timer, which will return a new message and restart the > timer. > Yes, the first time that Peek

Re: Menu - loop of sending and receiving WM_TIMER

2005-04-14 Thread Jose Alonso
On Thu, 2005-04-14 at 15:53 +0200, Alexandre Julliard wrote: > Jose Alonso <[EMAIL PROTECTED]> writes: > > > for (;;) > > { > > (1) if (PeekMessageW( &msg, 0, 0, 0, PM_NOREMOVE )) > > ... > > { > > (2) DispatchMessageW( &msg ); > > } > >

Re: Menu - loop of sending and receiving WM_TIMER

2005-04-14 Thread Alexandre Julliard
Jose Alonso <[EMAIL PROTECTED]> writes: > for (;;) > { > (1) if (PeekMessageW( &msg, 0, 0, 0, PM_NOREMOVE )) > ... > { > (2) DispatchMessageW( &msg ); > } > if (!fEndMenu) fRemove = TRUE; > > /* finally remove message from t

Menu - loop of sending and receiving WM_TIMER

2005-04-13 Thread Jose Alonso
If a Menu is accessed and the application used the function SetTimer, then the application and the wineserver use 100% of the CPU (loop of sending and receiving WM_TIMER). function used: SetTimer(NULL, 0, 100, TimerProc) Description of the loop: dlls/user/menu.c MENU_TrackMenu while (!fEndMe