summaryrefslogtreecommitdiff
path: root/library/qlibrary.cpp
Unidiff
Diffstat (limited to 'library/qlibrary.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qlibrary.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/library/qlibrary.cpp b/library/qlibrary.cpp
index 4aabbc5..cbf49a3 100644
--- a/library/qlibrary.cpp
+++ b/library/qlibrary.cpp
@@ -1,132 +1,132 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21 21
22#include "qlibrary_p.h" 22#include "qlibrary_p.h"
23 23
24// uncomment this to get error messages 24// uncomment this to get error messages
25//#define QT_DEBUG_COMPONENT 1 25//#define QT_DEBUG_COMPONENT 1
26// uncomment this to get error and success messages 26// uncomment this to get error and success messages
27//#define QT_DEBUG_COMPONENT 2 27//#define QT_DEBUG_COMPONENT 2
28 28
29#ifndef QT_DEBUG_COMPONENT 29#ifndef QT_DEBUG_COMPONENT
30# if defined(QT_DEBUG) 30# if defined(QT_DEBUG)
31# define QT_DEBUG_COMPONENT 1 31# define QT_DEBUG_COMPONENT 1
32# endif 32# endif
33#endif 33#endif
34 34
35#ifndef QT_NO_COMPONENT 35#ifndef QT_NO_COMPONENT
36 36
37// KAI C++ has at the moment problems with unloading the Qt plugins. So don't 37// KAI C++ has at the moment problems with unloading the Qt plugins. So don't
38// unload them as a workaround for now. 38// unload them as a workaround for now.
39#if defined(Q_CC_KAI) || defined(Q_OS_MAC) 39#if defined(Q_CC_KAI) || defined(Q_OS_MAC)
40#define QT_NO_LIBRARY_UNLOAD 40#define QT_NO_LIBRARY_UNLOAD
41#endif 41#endif
42 42
43#if defined(Q_WS_WIN) && !defined(QT_MAKEDLL) 43#if defined(Q_WS_WIN) && !defined(QT_MAKEDLL)
44#define QT_NO_LIBRARY_UNLOAD 44#define QT_NO_LIBRARY_UNLOAD
45#endif 45#endif
46 46
47/* Platform independent QLibraryPrivate implementations */ 47/* Platform independent QLibraryPrivate implementations */
48#ifndef QT_LITE_COMPONENT 48#ifndef QT_LITE_COMPONENT
49 49
50#include "qtimer.h" 50#include "qtimer.h"
51 51
52extern Q_EXPORT QApplication *qApp; 52extern Q_EXPORT QApplication *qApp;
53 53
54QLibraryPrivate::QLibraryPrivate( QLibrary *lib ) 54QLibraryPrivate::QLibraryPrivate( QLibrary *lib )
55 : QObject( 0, lib->library().latin1() ), pHnd( 0 ), libIface( 0 ), unloadTimer( 0 ), library( lib ) 55 : QObject( 0, lib->library().latin1() ), pHnd( 0 ), libIface( 0 ), unloadTimer( 0 ), library( lib )
56{ 56{
57} 57}
58 58
59QLibraryPrivate::~QLibraryPrivate() 59QLibraryPrivate::~QLibraryPrivate()
60{ 60{
61 if ( libIface ) 61 if ( libIface )
62 libIface->release(); 62 libIface->release();
63 killTimer(); 63 killTimer();
64} 64}
65 65
66/* 66/*
67 Only components that implement the QLibraryInterface can 67 Only components that implement the QLibraryInterface can
68 be unloaded automatically. 68 be unloaded automatically.
69*/ 69*/
70void QLibraryPrivate::tryUnload() 70void QLibraryPrivate::tryUnload()
71{ 71{
72 if ( library->policy() == QLibrary::Manual || !pHnd || !libIface ) 72 if ( library->policy() == QLibrary::Manual || !pHnd || !libIface )
73 return; 73 return;
74 74
75 if ( !libIface->canUnload() ) 75 if ( !libIface->canUnload() )
76 return; 76 return;
77 77
78#if defined(QT_DEBUG_COMPONENT) && QT_DEBUG_COMPONENT == 2 78#if defined(QT_DEBUG_COMPONENT) && QT_DEBUG_COMPONENT == 2
79 if ( library->unload() ) 79 if ( library->unload() )
80 qDebug( "%s has been automatically unloaded", library->library().latin1() ); 80 qDebug( "%s has been automatically unloaded", library->library().latin1() );
81#else 81#else
82 library->unload(); 82 library->unload();
83#endif 83#endif
84} 84}
85 85
86#else // QT_LITE_COMPOINENT 86#else // QT_LITE_COMPOINENT
87 87
88QLibraryPrivate::QLibraryPrivate( QLibrary *lib ) 88QLibraryPrivate::QLibraryPrivate( QLibrary *lib )
89 : pHnd( 0 ), libIface( 0 ), library( lib ) 89 : pHnd( 0 ), libIface( 0 ), library( lib )
90{ 90{
91} 91}
92 92
93#endif // QT_LITE_COMPOINENT 93#endif // QT_LITE_COMPOINENT
94 94
95void QLibraryPrivate::startTimer() 95void QLibraryPrivate::startTimer()
96{ 96{
97#ifndef QT_LITE_COMPONENT 97#ifndef QT_LITE_COMPONENT
98 unloadTimer = new QTimer( this ); 98 unloadTimer = new QTimer( this );
99 connect( unloadTimer, SIGNAL( timeout() ), this, SLOT( tryUnload() ) ); 99 connect( unloadTimer, SIGNAL( timeout() ), this, SLOT( tryUnload() ) );
100 unloadTimer->start( 5000, FALSE ); 100 unloadTimer->start( 5000, FALSE );
101#endif 101#endif
102} 102}
103 103
104void QLibraryPrivate::killTimer() 104void QLibraryPrivate::killTimer()
105{ 105{
106#ifndef QT_LITE_COMPONENT 106#ifndef QT_LITE_COMPONENT
107 delete unloadTimer; 107 delete unloadTimer;
108 unloadTimer = 0; 108 unloadTimer = 0;
109#endif 109#endif
110} 110}
111 111
112/*! 112/*!
113 \class QLibrary qlibrary.h 113 \class QLibrary qlibrary.h
114 114
115 \brief The QLibrary class provides a wrapper for handling shared libraries. 115 \brief The QLibrary class provides a wrapper for handling shared libraries.
116 116
117 This class is temporarily copied from Qt 3.0. 117 This class is temporarily copied from Qt 3.0.
118*/ 118*/
119 119
120/*! 120/*!
121 \enum QLibrary::Policy 121 \enum QLibrary::Policy
122 122
123 This enum type defines the various policies a QLibrary can have with respect to 123 This enum type defines the various policies a QLibrary can have with respect to
124 loading and unloading the shared library. 124 loading and unloading the shared library.
125 125
126 The \e policy can be: 126 The \e policy can be:
127 127
128 \value Delayed The library get's loaded as soon as needed and unloaded in the destructor 128 \value Delayed The library get's loaded as soon as needed and unloaded in the destructor
129 \value Immediately The library is loaded immediately and unloaded in the destructor 129 \value Immediately The library is loaded immediately and unloaded in the destructor
130 \value Manual Like delayed, and library has to be unloaded manually 130 \value Manual Like delayed, and library has to be unloaded manually
131*/ 131*/
132 132