]> git.sesse.net Git - vlc/blob - modules/gui/skins2/src/os_factory.cpp
* modules/gui/skins2/*: added svn Id property.
[vlc] / modules / gui / skins2 / src / os_factory.cpp
1 /*****************************************************************************
2  * os_factory.cpp
3  *****************************************************************************
4  * Copyright (C) 2003 VideoLAN
5  * $Id$
6  *
7  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
8  *          Olivier Teulière <ipkiss@via.ecp.fr>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
23  *****************************************************************************/
24
25 #include "os_factory.hpp"
26
27 #ifdef X11_SKINS
28 #include "../x11/x11_factory.hpp"
29 #elif defined WIN32_SKINS
30 #include "../win32/win32_factory.hpp"
31 #endif
32
33 OSFactory *OSFactory::instance( intf_thread_t *pIntf )
34 {
35     if( ! pIntf->p_sys->p_osFactory )
36     {
37         OSFactory *pOsFactory;
38 #ifdef X11_SKINS
39         pOsFactory = new X11Factory( pIntf );
40 #elif defined WIN32_SKINS
41         pOsFactory = new Win32Factory( pIntf );
42 #else
43 #error "No OSFactory implementation !"
44 #endif
45
46         if( pOsFactory->init() )
47         {
48             // Initialization succeeded
49             pIntf->p_sys->p_osFactory = pOsFactory;
50         }
51         else
52         {
53             // Initialization failed
54             delete pOsFactory;
55         }
56     }
57     return pIntf->p_sys->p_osFactory;
58 }
59
60
61 void OSFactory::destroy( intf_thread_t *pIntf )
62 {
63     if( pIntf->p_sys->p_osFactory )
64     {
65         delete pIntf->p_sys->p_osFactory;
66         pIntf->p_sys->p_osFactory = NULL;
67     }
68 }
69