* skin_common.h: Private Skin interface description
*****************************************************************************
* Copyright (C) 2003 VideoLAN
- * $Id: skin_common.h,v 1.20 2003/06/11 10:42:34 gbazin Exp $
+ * $Id: skin_common.h,v 1.21 2003/06/13 21:18:53 asmax Exp $
*
* Authors: Olivier Teulière <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
Display *display;
Window mainWin; // Window which receives "broadcast" events
vlc_mutex_t xlock;
+ Pixmap iconPixmap; // vlc icon
+ Pixmap iconMask;
#endif
#ifdef WIN32
* skin-main.cpp: skins plugin for VLC
*****************************************************************************
* Copyright (C) 2003 VideoLAN
- * $Id: skin_main.cpp,v 1.38 2003/06/11 21:46:57 asmax Exp $
+ * $Id: skin_main.cpp,v 1.39 2003/06/13 21:18:53 asmax Exp $
*
* Authors: Olivier Teulière <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
#ifdef X11_SKINS
#include <X11/Xlib.h>
+#include <Imlib2.h>
#endif
//---------------------------------------------------------------------------
#elif defined X11_SKINS
// Initialize X11
- p_intf->p_sys->display = XOpenDisplay( NULL );
+ Display *display = XOpenDisplay( NULL );
+ p_intf->p_sys->display = display;
vlc_mutex_init( p_intf, &p_intf->p_sys->xlock );
// Fake window to receive broadcast events
- Window root = DefaultRootWindow( p_intf->p_sys->display );
- p_intf->p_sys->mainWin = XCreateSimpleWindow( p_intf->p_sys->display, root, 0, 0,
+ Window root = DefaultRootWindow( display );
+ p_intf->p_sys->mainWin = XCreateSimpleWindow( display, root, 0, 0,
1, 1, 0, 0, 0 );
- XStoreName( p_intf->p_sys->display, p_intf->p_sys->mainWin, "VLC Media Player" );
+ XStoreName( display, p_intf->p_sys->mainWin, "VLC Media Player" );
+
+ // Load the vlc icon
+ int screen = DefaultScreen( display );
+ Screen *screenptr = DefaultScreenOfDisplay( display );
+ Visual *visual = DefaultVisualOfScreen( screenptr );
+ imlib_context_set_display( display );
+ imlib_context_set_visual( visual );
+ imlib_context_set_drawable( root );
+ imlib_context_set_colormap( DefaultColormap( display, screen ) );
+ imlib_context_set_dither( 1 );
+ imlib_context_set_blend( 1 );
+ Imlib_Image img = imlib_load_image_immediately( DATA_PATH "vlc32x32.png" );
+ if( img == NULL )
+ {
+ // for developers ;)
+ img = imlib_load_image_immediately( "./share/vlc32x32.png" );
+ }
+ if( img == NULL )
+ {
+ msg_Err( p_intf, "loading vlc icon failed" );
+ p_intf->p_sys->iconPixmap = None;
+ p_intf->p_sys->iconMask = None;
+ }
+ else
+ {
+ imlib_context_set_image( img );
+ imlib_render_pixmaps_for_whole_image( &p_intf->p_sys->iconPixmap,
+ &p_intf->p_sys->iconMask );
+ imlib_free_image();
+ }
+
#elif defined WIN32
// Interface thread id used to post broadcast messages
* x11_window.cpp: X11 implementation of the Window class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
- * $Id: x11_window.cpp,v 1.21 2003/06/09 19:08:33 asmax Exp $
+ * $Id: x11_window.cpp,v 1.22 2003/06/13 21:18:54 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
XUNLOCK;
}
+ // Associate vlc icon to the window
+ XLOCK;
+ XWMHints *hints = XGetWMHints( display, Wnd );
+ if( !hints)
+ {
+ hints = XAllocWMHints();
+ }
+ if( hints->icon_pixmap != None )
+ {
+ hints->icon_pixmap = p_intf->p_sys->iconPixmap;
+ hints->flags |= IconPixmapHint;
+ }
+ if( hints->icon_mask != None )
+ {
+ hints->icon_mask = p_intf->p_sys->iconMask;
+ hints->flags |= IconMaskHint;
+ }
+ XSetWMHints( display, Wnd, hints );
+ XFree( hints );
+ XUNLOCK;
+
// Create Tool Tip window
XColor color;
color.red = 0xffff;