diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2016-02-18 20:20:09 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2016-02-20 13:36:19 +0000 |
commit | a425b5f19c20f357acf92950dda7b395c1ee4c72 (patch) | |
tree | 4db0ed2aab2a884466c7033989cc5fe85932cf90 /src/plugins | |
parent | 611942f2d737cc75c7492dffc183174e432aa155 (diff) |
QWindowsGLContext: replace homebrew Array with std::vector
std::vector is all that the Array original author dreamed about,
and more: never shrinks capacity, non CoWed, ...
Appart from append(), the Array API was modeled after std::vector
(size_t size_type, etc) already, so the port to std::vector is
minimal. The only change besides append() -> push_back() was not
assuming const_iterator being const T*.
Remove now-unused Array.
Change-Id: I02bc71441d01e554e320746d82dbc00f74c5466d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/windows/array.h | 102 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsglcontext.cpp | 19 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsglcontext.h | 5 | ||||
-rw-r--r-- | src/plugins/platforms/windows/windows.pri | 1 |
4 files changed, 12 insertions, 115 deletions
diff --git a/src/plugins/platforms/windows/array.h b/src/plugins/platforms/windows/array.h deleted file mode 100644 index 98d2496a7f..0000000000 --- a/src/plugins/platforms/windows/array.h +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef ARRAY_H -#define ARRAY_H - -#include <QtCore/QtGlobal> -#include <algorithm> - -QT_BEGIN_NAMESPACE - -/* A simple, non-shared array. */ - -template <class T> -class Array -{ - Q_DISABLE_COPY(Array) -public: - enum { initialSize = 5 }; - - typedef T* const_iterator; - - explicit Array(size_t size= 0) : data(0), m_capacity(0), m_size(0) - { if (size) resize(size); } - ~Array() { delete [] data; } - - T *data; - inline size_t size() const { return m_size; } - inline const_iterator begin() const { return data; } - inline const_iterator end() const { return data + m_size; } - - inline void append(const T &value) - { - const size_t oldSize = m_size; - resize(m_size + 1); - data[oldSize] = value; - } - - inline void resize(size_t size) - { - if (size > m_size) - reserve(size > 1 ? size + size / 2 : size_t(initialSize)); - m_size = size; - } - - void reserve(size_t capacity) - { - if (capacity > m_capacity) { - const T *oldData = data; - data = new T[capacity]; - if (oldData) { - std::copy(oldData, oldData + m_size, data); - delete [] oldData; - } - m_capacity = capacity; - } - } - -private: - size_t m_capacity; - size_t m_size; -}; - -QT_END_NAMESPACE - -#endif // ARRAY_H diff --git a/src/plugins/platforms/windows/qwindowsglcontext.cpp b/src/plugins/platforms/windows/qwindowsglcontext.cpp index 71b2387c7c..1adce2a874 100644 --- a/src/plugins/platforms/windows/qwindowsglcontext.cpp +++ b/src/plugins/platforms/windows/qwindowsglcontext.cpp @@ -1270,10 +1270,9 @@ bool QWindowsGLContext::updateObtainedParams(HDC hdc, int *obtainedSwapInterval) void QWindowsGLContext::releaseDCs() { - const QOpenGLContextData *end = m_windowContexts.end(); - for (const QOpenGLContextData *p = m_windowContexts.begin(); p < end; ++p) - ReleaseDC(p->hwnd, p->hdc); - m_windowContexts.resize(0); + for (const auto &e : m_windowContexts) + ReleaseDC(e.hwnd, e.hdc); + m_windowContexts.clear(); } static inline QWindowsWindow *glWindowOf(QPlatformSurface *s) @@ -1288,12 +1287,12 @@ static inline HWND handleOf(QPlatformSurface *s) // Find a window in a context list. static inline const QOpenGLContextData * - findByHWND(const Array<QOpenGLContextData> &data, HWND hwnd) + findByHWND(const std::vector<QOpenGLContextData> &data, HWND hwnd) { - const QOpenGLContextData *end = data.end(); - for (const QOpenGLContextData *p = data.begin(); p < end; ++p) - if (p->hwnd == hwnd) - return p; + for (const auto &e : data) { + if (e.hwnd == hwnd) + return &e; + } return 0; } @@ -1347,7 +1346,7 @@ bool QWindowsGLContext::makeCurrent(QPlatformSurface *surface) if (m_obtainedFormat.swapBehavior() == QSurfaceFormat::DoubleBuffer) window->setFlag(QWindowsWindow::OpenGLDoubleBuffered); } - m_windowContexts.append(newContext); + m_windowContexts.push_back(newContext); m_lost = false; bool success = QOpenGLStaticContext::opengl32.wglMakeCurrent(newContext.hdc, newContext.renderingContext); diff --git a/src/plugins/platforms/windows/qwindowsglcontext.h b/src/plugins/platforms/windows/qwindowsglcontext.h index 791a17301e..3acfed1ccf 100644 --- a/src/plugins/platforms/windows/qwindowsglcontext.h +++ b/src/plugins/platforms/windows/qwindowsglcontext.h @@ -40,12 +40,13 @@ #ifndef QWINDOWSGLCONTEXT_H #define QWINDOWSGLCONTEXT_H -#include "array.h" #include "qtwindows_additional.h" #include "qwindowsopenglcontext.h" #include <QtGui/QOpenGLContext> +#include <vector> + QT_BEGIN_NAMESPACE class QDebug; @@ -264,7 +265,7 @@ private: QOpenGLContext *m_context; QSurfaceFormat m_obtainedFormat; HGLRC m_renderingContext; - Array<QOpenGLContextData> m_windowContexts; + std::vector<QOpenGLContextData> m_windowContexts; PIXELFORMATDESCRIPTOR m_obtainedPixelFormatDescriptor; int m_pixelFormat; bool m_extensionsUsed; diff --git a/src/plugins/platforms/windows/windows.pri b/src/plugins/platforms/windows/windows.pri index 67af5c03ef..766168ccb8 100644 --- a/src/plugins/platforms/windows/windows.pri +++ b/src/plugins/platforms/windows/windows.pri @@ -55,7 +55,6 @@ HEADERS += \ $$PWD/qwindowsmime.h \ $$PWD/qwindowsinternalmimedata.h \ $$PWD/qwindowscursor.h \ - $$PWD/array.h \ $$PWD/qwindowsinputcontext.h \ $$PWD/qwindowstheme.h \ $$PWD/qwindowsdialoghelpers.h \ |