Commit a7765cbe authored by Geoffroy Couprie's avatar Geoffroy Couprie

WinCE: update the use of messages subscription

parent b047088a
...@@ -150,9 +150,6 @@ LRESULT DialogsProvider::WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp ) ...@@ -150,9 +150,6 @@ LRESULT DialogsProvider::WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
void DialogsProvider::OnIdle( void ) void DialogsProvider::OnIdle( void )
{ {
/* Update the log window */
if( p_messages_dialog ) p_messages_dialog->UpdateLog();
/* Update the playlist */ /* Update the playlist */
if( p_playlist_dialog ) p_playlist_dialog->UpdatePlaylist(); if( p_playlist_dialog ) p_playlist_dialog->UpdatePlaylist();
......
...@@ -63,6 +63,16 @@ Messages::Messages( intf_thread_t *p_intf, CBaseWindow *p_parent, ...@@ -63,6 +63,16 @@ Messages::Messages( intf_thread_t *p_intf, CBaseWindow *p_parent,
WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_SIZEBOX, WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_SIZEBOX,
0, 0, /*CW_USEDEFAULT*/300, /*CW_USEDEFAULT*/300, 0, 0, /*CW_USEDEFAULT*/300, /*CW_USEDEFAULT*/300,
p_parent->GetHandle(), NULL, h_inst, (void *)this ); p_parent->GetHandle(), NULL, h_inst, (void *)this );
// Suscribe to messages bank
cb_data = new msg_cb_data_t;
cb_data->self = this;
sub = msg_Subscribe( p_intf->p_libvlc, sinkMessage, cb_data );
}
Messages::~Messages()
{
delete cb_data;
msg_Unsubscribe(sub);
} }
/*********************************************************************** /***********************************************************************
...@@ -124,10 +134,6 @@ LRESULT Messages::WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp ) ...@@ -124,10 +134,6 @@ LRESULT Messages::WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
SHFullScreen( hwnd, SHFS_HIDESIPBUTTON ); SHFullScreen( hwnd, SHFS_HIDESIPBUTTON );
break; break;
case WM_TIMER:
UpdateLog();
break;
case WM_CLOSE: case WM_CLOSE:
Show( FALSE ); Show( FALSE );
return TRUE; return TRUE;
...@@ -191,42 +197,24 @@ LRESULT Messages::WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp ) ...@@ -191,42 +197,24 @@ LRESULT Messages::WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
return DefWindowProc( hwnd, msg, wp, lp ); return DefWindowProc( hwnd, msg, wp, lp );
} }
void Messages::UpdateLog() void Messages::sinkMessage (msg_cb_data_t *data, msg_item_t *item,
unsigned overruns)
{ {
msg_subscription_t *p_sub = p_intf->p_sys->p_sub; Messages *self = data->self;
string debug;
int i_start, i_stop;
vlc_mutex_lock( p_sub->p_lock ); self->sinkMessage (item, overruns);
i_stop = *p_sub->pi_stop; }
vlc_mutex_unlock( p_sub->p_lock );
if( p_sub->i_start != i_stop ) void Messages::sinkMessage (msg_item_t *item, unsigned overruns)
{ {
for( i_start = p_sub->i_start; i_start != i_stop;
i_start = (i_start+1) % VLC_MSG_QSIZE )
{
vlc_value_t val; vlc_value_t val;
var_Get( p_intf->p_libvlc, "verbose", &val ); var_Get( p_intf->p_libvlc, "verbose", &val );
switch( p_sub->p_msg[i_start].i_type )
{
case VLC_MSG_ERR:
case VLC_MSG_INFO:
if( val.i_int < 0 ) continue;
break;
case VLC_MSG_WARN:
if( val.i_int < 1 ) continue;
break;
case VLC_MSG_DBG:
if( val.i_int < 2 ) continue;
break;
}
/* Append all messages to log window */ /* Append all messages to log window */
debug = p_sub->p_msg[i_start].psz_module; string debug = item->psz_module;
switch( p_sub->p_msg[i_start].i_type ) switch( item->i_type )
{ {
case VLC_MSG_INFO: debug += ": "; break; case VLC_MSG_INFO: debug += ": "; break;
case VLC_MSG_ERR: debug += " error: "; break; case VLC_MSG_ERR: debug += " error: "; break;
...@@ -235,7 +223,7 @@ void Messages::UpdateLog() ...@@ -235,7 +223,7 @@ void Messages::UpdateLog()
} }
/* Add message */ /* Add message */
debug += p_sub->p_msg[i_start].psz_msg; debug += item->psz_msg;
LVITEM lv; LVITEM lv;
lv.mask = LVIF_TEXT; lv.mask = LVIF_TEXT;
...@@ -246,10 +234,5 @@ void Messages::UpdateLog() ...@@ -246,10 +234,5 @@ void Messages::UpdateLog()
ListView_InsertItem( hListView, &lv ); ListView_InsertItem( hListView, &lv );
ListView_SetItemText( hListView, lv.iItem, 0, ListView_SetItemText( hListView, lv.iItem, 0,
(TCHAR *)_FROMMB(debug.c_str()) ); (TCHAR *)_FROMMB(debug.c_str()) );
}
vlc_mutex_lock( p_sub->p_lock );
p_sub->i_start = i_start;
vlc_mutex_unlock( p_sub->p_lock );
}
} }
...@@ -116,8 +116,6 @@ static int Open( vlc_object_t *p_this ) ...@@ -116,8 +116,6 @@ static int Open( vlc_object_t *p_this )
if( p_intf->p_sys == NULL ) if( p_intf->p_sys == NULL )
return VLC_ENOMEM; return VLC_ENOMEM;
// Suscribe to messages bank
p_intf->p_sys->p_sub = msg_Subscribe( p_intf );
// Misc init // Misc init
p_intf->p_sys->p_audio_menu = NULL; p_intf->p_sys->p_audio_menu = NULL;
...@@ -179,9 +177,6 @@ static void Close( vlc_object_t *p_this ) ...@@ -179,9 +177,6 @@ static void Close( vlc_object_t *p_this )
vlc_thread_join( p_intf ); vlc_thread_join( p_intf );
} }
// Unsuscribe to messages bank
msg_Unsubscribe( p_intf, p_intf->p_sys->p_sub );
// Destroy structure // Destroy structure
free( p_intf->p_sys ); free( p_intf->p_sys );
} }
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
#endif #endif
#include "vlc_keys.h" #include "vlc_keys.h"
#include <vlc_messages.h>
#include <stdio.h> #include <stdio.h>
#include <string> #include <string>
...@@ -69,8 +70,7 @@ struct intf_sys_t ...@@ -69,8 +70,7 @@ struct intf_sys_t
int i_slider_oldpos; /* previous position */ int i_slider_oldpos; /* previous position */
bool b_slider_free; /* slider status */ bool b_slider_free; /* slider status */
/* The messages window */
msg_subscription_t* p_sub; /* message bank subscription */
/* Playlist management */ /* Playlist management */
int i_playing; /* playlist selected item */ int i_playing; /* playlist selected item */
...@@ -212,20 +212,29 @@ protected: ...@@ -212,20 +212,29 @@ protected:
BOOL CreateTreeView( HWND ); BOOL CreateTreeView( HWND );
}; };
struct msg_cb_data_t
{
Messages *self;
};
/* Messages */ /* Messages */
class Messages : public CBaseWindow class Messages : public CBaseWindow
{ {
public: public:
/* Constructor */ /* Constructor */
Messages( intf_thread_t *, CBaseWindow *, HINSTANCE ); Messages( intf_thread_t *, CBaseWindow *, HINSTANCE );
virtual ~Messages(){}; ~Messages();
void UpdateLog(void); static void sinkMessage (msg_cb_data_t *, msg_item_t *, unsigned);
void sinkMessage (msg_item_t *item, unsigned);
protected: protected:
virtual LRESULT WndProc( HWND, UINT, WPARAM, LPARAM ); virtual LRESULT WndProc( HWND, UINT, WPARAM, LPARAM );
/* The messages window */
msg_subscription_t* sub; /* message bank subscription */
msg_cb_data_t *cb_data;
HWND hListView; HWND hListView;
bool b_verbose; bool b_verbose;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment