[vlc-devel] [PATCH] win32: use PostMessage in event handlers to avoid deadlocks

Sergey Radionov rsatom at gmail.com
Sun Feb 5 03:45:47 CET 2012


2012/2/5 Rafaël Carré <funman at videolan.org>:
> Le 2012-02-04 11:34, Sergey Radionov a écrit :
>> when main thread wait something. It's fixing "stop" bug.
>> ---
>>  common/win32_fullscreen.cpp |    8 ++++----
>>  1 files changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/common/win32_fullscreen.cpp b/common/win32_fullscreen.cpp
>> index e1d7f0a..c0d8ab3 100644
>> --- a/common/win32_fullscreen.cpp
>> +++ b/common/win32_fullscreen.cpp
>> @@ -498,7 +498,7 @@ void VLCControlsWnd::SetVideoPosScrollRangeByVideoLen()
>>
>>  void VLCControlsWnd::SetVideoPosScrollPosByVideoPos(libvlc_time_t CurScrollPos)
>>  {
>> -    SendMessage(hVideoPosScroll, (UINT)PBM_SETPOS, (WPARAM) (CurScrollPos >> VideoPosShiftBits), 0);
>> +    PostMessage(hVideoPosScroll, (UINT)PBM_SETPOS, (WPARAM) (CurScrollPos >> VideoPosShiftBits), 0);
>>  }
>>
>>  void VLCControlsWnd::SetVideoPos(float Pos) //0-start, 1-end
>> @@ -561,15 +561,15 @@ void VLCControlsWnd::handle_input_state_event(const libvlc_event_t* event)
>>      switch( event->type )
>>      {
>>          case libvlc_MediaPlayerPlaying:
>> -            SendMessage(hPlayPauseButton, BM_SETIMAGE,
>> +            PostMessage(hPlayPauseButton, BM_SETIMAGE,
>>                          (WPARAM)IMAGE_BITMAP, (LPARAM)RC().hPauseBitmap);
>>              break;
>>          case libvlc_MediaPlayerPaused:
>> -            SendMessage(hPlayPauseButton, BM_SETIMAGE,
>> +            PostMessage(hPlayPauseButton, BM_SETIMAGE,
>>                          (WPARAM)IMAGE_BITMAP, (LPARAM)RC().hPlayBitmap);
>>              break;
>>          case libvlc_MediaPlayerStopped:
>> -            SendMessage(hPlayPauseButton, BM_SETIMAGE,
>> +            PostMessage(hPlayPauseButton, BM_SETIMAGE,
>>                          (WPARAM)IMAGE_BITMAP, (LPARAM)RC().hPlayBitmap);
>>              break;
>>      }
>
> Are the messages always handled by the receiving thread, since we don't
> wait for it with PostMessage?
Messages  are always handled by thread which owns window (thread in
which window was created). PostMessage add message to input queue of
thread but don't wait handling of it (SendMessage always wait until
message will be handled).

> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> http://mailman.videolan.org/listinfo/vlc-devel



More information about the vlc-devel mailing list