Commit 4b6ec77d authored by Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf

Win32: Don't leak a HICON

Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent 5a5d5155
...@@ -122,6 +122,8 @@ struct event_thread_t ...@@ -122,6 +122,8 @@ struct event_thread_t
video_format_t source; video_format_t source;
vout_display_place_t place; vout_display_place_t place;
HICON vlc_icon;
bool has_moved; bool has_moved;
}; };
...@@ -498,7 +500,6 @@ static int DirectXCreateWindow( event_thread_t *p_event ) ...@@ -498,7 +500,6 @@ static int DirectXCreateWindow( event_thread_t *p_event )
HMENU hMenu; HMENU hMenu;
RECT rect_window; RECT rect_window;
WNDCLASS wc; /* window class components */ WNDCLASS wc; /* window class components */
HICON vlc_icon;
char vlc_path[MAX_PATH+1]; char vlc_path[MAX_PATH+1];
int i_style, i_stylex; int i_style, i_stylex;
...@@ -537,11 +538,11 @@ static int DirectXCreateWindow( event_thread_t *p_event ) ...@@ -537,11 +538,11 @@ static int DirectXCreateWindow( event_thread_t *p_event )
#endif #endif
/* Get the Icon from the main app */ /* Get the Icon from the main app */
vlc_icon = NULL; p_event->vlc_icon = NULL;
#ifndef UNDER_CE #ifndef UNDER_CE
if( GetModuleFileName( NULL, vlc_path, MAX_PATH ) ) if( GetModuleFileName( NULL, vlc_path, MAX_PATH ) )
{ {
vlc_icon = ExtractIcon( hInstance, vlc_path, 0 ); p_event->vlc_icon = ExtractIcon( hInstance, vlc_path, 0 );
} }
#endif #endif
...@@ -551,7 +552,7 @@ static int DirectXCreateWindow( event_thread_t *p_event ) ...@@ -551,7 +552,7 @@ static int DirectXCreateWindow( event_thread_t *p_event )
wc.cbClsExtra = 0; /* no extra class data */ wc.cbClsExtra = 0; /* no extra class data */
wc.cbWndExtra = 0; /* no extra window data */ wc.cbWndExtra = 0; /* no extra window data */
wc.hInstance = hInstance; /* instance */ wc.hInstance = hInstance; /* instance */
wc.hIcon = vlc_icon; /* load the vlc big icon */ wc.hIcon = p_event->vlc_icon; /* load the vlc big icon */
wc.hCursor = p_event->is_cursor_hidden ? p_event->cursor_empty : wc.hCursor = p_event->is_cursor_hidden ? p_event->cursor_empty :
p_event->cursor_arrow; p_event->cursor_arrow;
wc.hbrBackground = GetStockObject(BLACK_BRUSH); /* background color */ wc.hbrBackground = GetStockObject(BLACK_BRUSH); /* background color */
...@@ -561,8 +562,8 @@ static int DirectXCreateWindow( event_thread_t *p_event ) ...@@ -561,8 +562,8 @@ static int DirectXCreateWindow( event_thread_t *p_event )
/* Register the window class */ /* Register the window class */
if( !RegisterClass(&wc) ) if( !RegisterClass(&wc) )
{ {
if( vlc_icon ) if( p_event->vlc_icon )
DestroyIcon( vlc_icon ); DestroyIcon( p_event->vlc_icon );
msg_Err( vd, "DirectXCreateWindow RegisterClass FAILED (err=%lu)", GetLastError() ); msg_Err( vd, "DirectXCreateWindow RegisterClass FAILED (err=%lu)", GetLastError() );
return VLC_EGENERIC; return VLC_EGENERIC;
...@@ -717,6 +718,9 @@ static void DirectXCloseWindow( event_thread_t *p_event ) ...@@ -717,6 +718,9 @@ static void DirectXCloseWindow( event_thread_t *p_event )
vout_display_DeleteWindow( vd, p_event->parent_window ); vout_display_DeleteWindow( vd, p_event->parent_window );
p_event->hwnd = NULL; p_event->hwnd = NULL;
if( p_event->vlc_icon )
DestroyIcon( p_event->vlc_icon );
HINSTANCE hInstance = GetModuleHandle(NULL); HINSTANCE hInstance = GetModuleHandle(NULL);
UnregisterClass( p_event->class_video, hInstance ); UnregisterClass( p_event->class_video, hInstance );
UnregisterClass( p_event->class_main, hInstance ); UnregisterClass( p_event->class_main, hInstance );
......
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