~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/corelib/io/qabstractfileengine.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Alessandro Ghersi
  • Date: 2009-11-02 18:30:08 UTC
  • mfrom: (1.2.2 upstream)
  • mto: (15.2.5 experimental)
  • mto: This revision was merged to the branch mainline in revision 88.
  • Revision ID: james.westby@ubuntu.com-20091102183008-b6a4gcs128mvfb3m
Tags: upstream-4.6.0~beta1
ImportĀ upstreamĀ versionĀ 4.6.0~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/****************************************************************************
2
2
**
3
3
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
 
4
** All rights reserved.
4
5
** Contact: Nokia Corporation (qt-info@nokia.com)
5
6
**
6
7
** This file is part of the QtCore module of the Qt Toolkit.
7
8
**
8
9
** $QT_BEGIN_LICENSE:LGPL$
9
 
** Commercial Usage
10
 
** Licensees holding valid Qt Commercial licenses may use this file in
11
 
** accordance with the Qt Commercial License Agreement provided with the
12
 
** Software or, alternatively, in accordance with the terms contained in
13
 
** a written agreement between you and Nokia.
 
10
** No Commercial Usage
 
11
** This file contains pre-release code and may not be distributed.
 
12
** You may use this file in accordance with the terms and conditions
 
13
** contained in the Technology Preview License Agreement accompanying
 
14
** this package.
14
15
**
15
16
** GNU Lesser General Public License Usage
16
17
** Alternatively, this file may be used under the terms of the GNU Lesser
20
21
** ensure the GNU Lesser General Public License version 2.1 requirements
21
22
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
22
23
**
23
 
** In addition, as a special exception, Nokia gives you certain
24
 
** additional rights. These rights are described in the Nokia Qt LGPL
25
 
** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
26
 
** package.
27
 
**
28
 
** GNU General Public License Usage
29
 
** Alternatively, this file may be used under the terms of the GNU
30
 
** General Public License version 3.0 as published by the Free Software
31
 
** Foundation and appearing in the file LICENSE.GPL included in the
32
 
** packaging of this file.  Please review the following information to
33
 
** ensure the GNU General Public License version 3.0 requirements will be
34
 
** met: http://www.gnu.org/copyleft/gpl.html.
35
 
**
36
 
** If you are unsure which license is appropriate for your use, please
37
 
** contact the sales department at http://www.qtsoftware.com/contact.
 
24
** In addition, as a special exception, Nokia gives you certain additional
 
25
** rights.  These rights are described in the Nokia Qt LGPL Exception
 
26
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
 
27
**
 
28
** If you have questions regarding the use of this file, please contact
 
29
** Nokia at qt-info@nokia.com.
 
30
**
 
31
**
 
32
**
 
33
**
 
34
**
 
35
**
 
36
**
 
37
**
38
38
** $QT_END_LICENSE$
39
39
**
40
40
****************************************************************************/
42
42
#include "qabstractfileengine.h"
43
43
#include "private/qabstractfileengine_p.h"
44
44
#include "qdatetime.h"
45
 
#include "qmutex.h"
 
45
#include "qreadwritelock.h"
46
46
#include "qvariant.h"
47
47
// built-in handlers
48
48
#include "qfsfileengine.h"
98
98
    All application-wide handlers are stored in this list. The mutex must be
99
99
    acquired to ensure thread safety.
100
100
 */
101
 
Q_GLOBAL_STATIC_WITH_ARGS(QMutex, fileEngineHandlerMutex, (QMutex::Recursive))
 
101
Q_GLOBAL_STATIC_WITH_ARGS(QReadWriteLock, fileEngineHandlerMutex, (QReadWriteLock::Recursive))
102
102
static bool qt_abstractfileenginehandlerlist_shutDown = false;
103
103
class QAbstractFileEngineHandlerList : public QList<QAbstractFileEngineHandler *>
104
104
{
105
105
public:
106
106
    ~QAbstractFileEngineHandlerList()
107
107
    {
108
 
        QMutexLocker locker(fileEngineHandlerMutex());
 
108
        QWriteLocker locker(fileEngineHandlerMutex());
109
109
        qt_abstractfileenginehandlerlist_shutDown = true;
110
110
    }
111
111
};
122
122
 */
123
123
QAbstractFileEngineHandler::QAbstractFileEngineHandler()
124
124
{
125
 
    QMutexLocker locker(fileEngineHandlerMutex());
 
125
    QWriteLocker locker(fileEngineHandlerMutex());
126
126
    fileEngineHandlers()->prepend(this);
127
127
}
128
128
 
132
132
 */
133
133
QAbstractFileEngineHandler::~QAbstractFileEngineHandler()
134
134
{
135
 
    QMutexLocker locker(fileEngineHandlerMutex());
 
135
    QWriteLocker locker(fileEngineHandlerMutex());
136
136
    // Remove this handler from the handler list only if the list is valid.
137
137
    if (!qt_abstractfileenginehandlerlist_shutDown)
138
138
        fileEngineHandlers()->removeAll(this);
166
166
*/
167
167
QAbstractFileEngine *QAbstractFileEngine::create(const QString &fileName)
168
168
{
169
 
    QMutexLocker locker(fileEngineHandlerMutex());
 
169
    {
 
170
        QReadLocker locker(fileEngineHandlerMutex());
170
171
 
171
 
    // check for registered handlers that can load the file
172
 
    for (int i = 0; i < fileEngineHandlers()->size(); i++) {
173
 
        if (QAbstractFileEngine *ret = fileEngineHandlers()->at(i)->create(fileName))
174
 
            return ret;
 
172
        // check for registered handlers that can load the file
 
173
        for (int i = 0; i < fileEngineHandlers()->size(); i++) {
 
174
            if (QAbstractFileEngine *ret = fileEngineHandlers()->at(i)->create(fileName))
 
175
                return ret;
 
176
        }
175
177
    }
176
178
 
177
179
#ifdef QT_BUILD_CORE_LIB
252
254
    \value CanonicalPathName Same as CanonicalName, excluding the base name.
253
255
    \value BundleName Returns the name of the bundle implies BundleType is set.
254
256
 
 
257
    \omitvalue NFileNames
 
258
 
255
259
    \sa fileName(), setFileName()
256
260
*/
257
261
 
352
356
 */
353
357
QAbstractFileEngine::~QAbstractFileEngine()
354
358
{
355
 
    delete d_ptr;
356
 
    d_ptr = 0;
357
359
}
358
360
 
359
361
/*!
881
883
*/
882
884
QAbstractFileEngineIterator::~QAbstractFileEngineIterator()
883
885
{
884
 
    delete d;
885
886
}
886
887
 
887
888
/*!