| Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/platformsupport/fbconvenience/qfbscreen.cpp | 
| Source code | Switch to Preprocessed file | 
| Line | Source | Count | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | /**************************************************************************** | - | ||||||||||||||||||
| 2 | ** | - | ||||||||||||||||||
| 3 | ** Copyright (C) 2015 The Qt Company Ltd. | - | ||||||||||||||||||
| 4 | ** Contact: http://www.qt.io/licensing/ | - | ||||||||||||||||||
| 5 | ** | - | ||||||||||||||||||
| 6 | ** This file is part of the plugins of the Qt Toolkit. | - | ||||||||||||||||||
| 7 | ** | - | ||||||||||||||||||
| 8 | ** $QT_BEGIN_LICENSE:LGPL21$ | - | ||||||||||||||||||
| 9 | ** Commercial License Usage | - | ||||||||||||||||||
| 10 | ** Licensees holding valid commercial Qt licenses may use this file in | - | ||||||||||||||||||
| 11 | ** accordance with the commercial license agreement provided with the | - | ||||||||||||||||||
| 12 | ** Software or, alternatively, in accordance with the terms contained in | - | ||||||||||||||||||
| 13 | ** a written agreement between you and The Qt Company. For licensing terms | - | ||||||||||||||||||
| 14 | ** and conditions see http://www.qt.io/terms-conditions. For further | - | ||||||||||||||||||
| 15 | ** information use the contact form at http://www.qt.io/contact-us. | - | ||||||||||||||||||
| 16 | ** | - | ||||||||||||||||||
| 17 | ** GNU Lesser General Public License Usage | - | ||||||||||||||||||
| 18 | ** Alternatively, this file may be used under the terms of the GNU Lesser | - | ||||||||||||||||||
| 19 | ** General Public License version 2.1 or version 3 as published by the Free | - | ||||||||||||||||||
| 20 | ** Software Foundation and appearing in the file LICENSE.LGPLv21 and | - | ||||||||||||||||||
| 21 | ** LICENSE.LGPLv3 included in the packaging of this file. Please review the | - | ||||||||||||||||||
| 22 | ** following information to ensure the GNU Lesser General Public License | - | ||||||||||||||||||
| 23 | ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and | - | ||||||||||||||||||
| 24 | ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | - | ||||||||||||||||||
| 25 | ** | - | ||||||||||||||||||
| 26 | ** As a special exception, The Qt Company gives you certain additional | - | ||||||||||||||||||
| 27 | ** rights. These rights are described in The Qt Company LGPL Exception | - | ||||||||||||||||||
| 28 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | - | ||||||||||||||||||
| 29 | ** | - | ||||||||||||||||||
| 30 | ** $QT_END_LICENSE$ | - | ||||||||||||||||||
| 31 | ** | - | ||||||||||||||||||
| 32 | ****************************************************************************/ | - | ||||||||||||||||||
| 33 | - | |||||||||||||||||||
| 34 | #include "qfbscreen_p.h" | - | ||||||||||||||||||
| 35 | #include "qfbcursor_p.h" | - | ||||||||||||||||||
| 36 | #include "qfbwindow_p.h" | - | ||||||||||||||||||
| 37 | #include "qfbbackingstore_p.h" | - | ||||||||||||||||||
| 38 | - | |||||||||||||||||||
| 39 | #include <QtGui/QPainter> | - | ||||||||||||||||||
| 40 | #include <QtCore/QCoreApplication> | - | ||||||||||||||||||
| 41 | #include <qpa/qwindowsysteminterface.h> | - | ||||||||||||||||||
| 42 | - | |||||||||||||||||||
| 43 | #include <QtCore/QDebug> | - | ||||||||||||||||||
| 44 | #include <QtCore/QElapsedTimer> | - | ||||||||||||||||||
| 45 | - | |||||||||||||||||||
| 46 | QT_BEGIN_NAMESPACE | - | ||||||||||||||||||
| 47 | - | |||||||||||||||||||
| 48 | QFbScreen::QFbScreen() : mUpdatePending(false), mCursor(0), mGeometry(), mDepth(16), mFormat(QImage::Format_RGB16), mScreenImage(0), mCompositePainter(0), mIsUpToDate(false) | - | ||||||||||||||||||
| 49 | { | - | ||||||||||||||||||
| 50 | } never executed:  end of block | 0 | ||||||||||||||||||
| 51 | - | |||||||||||||||||||
| 52 | QFbScreen::~QFbScreen() | - | ||||||||||||||||||
| 53 | { | - | ||||||||||||||||||
| 54 | delete mCompositePainter; | - | ||||||||||||||||||
| 55 | delete mScreenImage; | - | ||||||||||||||||||
| 56 | } never executed:  end of block | 0 | ||||||||||||||||||
| 57 | - | |||||||||||||||||||
| 58 | void QFbScreen::initializeCompositor() | - | ||||||||||||||||||
| 59 | { | - | ||||||||||||||||||
| 60 | mScreenImage = new QImage(mGeometry.size(), mFormat); | - | ||||||||||||||||||
| 61 | scheduleUpdate(); | - | ||||||||||||||||||
| 62 | } never executed:  end of block | 0 | ||||||||||||||||||
| 63 | - | |||||||||||||||||||
| 64 | bool QFbScreen::event(QEvent *event) | - | ||||||||||||||||||
| 65 | { | - | ||||||||||||||||||
| 66 |     if (event->type() == QEvent::UpdateRequest) {
  | 0 | ||||||||||||||||||
| 67 | doRedraw(); | - | ||||||||||||||||||
| 68 | mUpdatePending = false; | - | ||||||||||||||||||
| 69 |         return true; never executed:  return true; | 0 | ||||||||||||||||||
| 70 | } | - | ||||||||||||||||||
| 71 |     return QObject::event(event); never executed:  return QObject::event(event); | 0 | ||||||||||||||||||
| 72 | } | - | ||||||||||||||||||
| 73 | - | |||||||||||||||||||
| 74 | void QFbScreen::addWindow(QFbWindow *window) | - | ||||||||||||||||||
| 75 | { | - | ||||||||||||||||||
| 76 | mWindowStack.prepend(window); | - | ||||||||||||||||||
| 77 |     if (!mPendingBackingStores.isEmpty()) {
  | 0 | ||||||||||||||||||
| 78 | //check if we have a backing store for this window | - | ||||||||||||||||||
| 79 |         for (int i = 0; i < mPendingBackingStores.size(); ++i) {
  | 0 | ||||||||||||||||||
| 80 | QFbBackingStore *bs = mPendingBackingStores.at(i); | - | ||||||||||||||||||
| 81 | // this gets called during QWindow::create() at a point where the | - | ||||||||||||||||||
| 82 | // invariant (window->handle()->window() == window) is broken | - | ||||||||||||||||||
| 83 |             if (bs->window() == window->window()) {
  | 0 | ||||||||||||||||||
| 84 | window->setBackingStore(bs); | - | ||||||||||||||||||
| 85 | mPendingBackingStores.removeAt(i); | - | ||||||||||||||||||
| 86 |                 break; never executed:  break; | 0 | ||||||||||||||||||
| 87 | } | - | ||||||||||||||||||
| 88 |         } never executed:  end of block | 0 | ||||||||||||||||||
| 89 |     } never executed:  end of block | 0 | ||||||||||||||||||
| 90 | invalidateRectCache(); | - | ||||||||||||||||||
| 91 | setDirty(window->geometry()); | - | ||||||||||||||||||
| 92 | QWindow *w = topWindow(); | - | ||||||||||||||||||
| 93 | QWindowSystemInterface::handleWindowActivated(w); | - | ||||||||||||||||||
| 94 | topWindowChanged(w); | - | ||||||||||||||||||
| 95 | } never executed:  end of block | 0 | ||||||||||||||||||
| 96 | - | |||||||||||||||||||
| 97 | void QFbScreen::removeWindow(QFbWindow *window) | - | ||||||||||||||||||
| 98 | { | - | ||||||||||||||||||
| 99 | mWindowStack.removeOne(window); | - | ||||||||||||||||||
| 100 | invalidateRectCache(); | - | ||||||||||||||||||
| 101 | setDirty(window->geometry()); | - | ||||||||||||||||||
| 102 | QWindow *w = topWindow(); | - | ||||||||||||||||||
| 103 | QWindowSystemInterface::handleWindowActivated(w); | - | ||||||||||||||||||
| 104 | topWindowChanged(w); | - | ||||||||||||||||||
| 105 | } never executed:  end of block | 0 | ||||||||||||||||||
| 106 | - | |||||||||||||||||||
| 107 | void QFbScreen::raise(QFbWindow *window) | - | ||||||||||||||||||
| 108 | { | - | ||||||||||||||||||
| 109 | int index = mWindowStack.indexOf(window); | - | ||||||||||||||||||
| 110 |     if (index <= 0)
  | 0 | ||||||||||||||||||
| 111 |         return; never executed:  return; | 0 | ||||||||||||||||||
| 112 | mWindowStack.move(index, 0); | - | ||||||||||||||||||
| 113 | invalidateRectCache(); | - | ||||||||||||||||||
| 114 | setDirty(window->geometry()); | - | ||||||||||||||||||
| 115 | QWindow *w = topWindow(); | - | ||||||||||||||||||
| 116 | QWindowSystemInterface::handleWindowActivated(w); | - | ||||||||||||||||||
| 117 | topWindowChanged(w); | - | ||||||||||||||||||
| 118 | } never executed:  end of block | 0 | ||||||||||||||||||
| 119 | - | |||||||||||||||||||
| 120 | void QFbScreen::lower(QFbWindow *window) | - | ||||||||||||||||||
| 121 | { | - | ||||||||||||||||||
| 122 | int index = mWindowStack.indexOf(window); | - | ||||||||||||||||||
| 123 |     if (index == -1 || index == (mWindowStack.size() - 1))
 
  | 0 | ||||||||||||||||||
| 124 |         return; never executed:  return; | 0 | ||||||||||||||||||
| 125 | mWindowStack.move(index, mWindowStack.size() - 1); | - | ||||||||||||||||||
| 126 | invalidateRectCache(); | - | ||||||||||||||||||
| 127 | setDirty(window->geometry()); | - | ||||||||||||||||||
| 128 | QWindow *w = topWindow(); | - | ||||||||||||||||||
| 129 | QWindowSystemInterface::handleWindowActivated(w); | - | ||||||||||||||||||
| 130 | topWindowChanged(w); | - | ||||||||||||||||||
| 131 | } never executed:  end of block | 0 | ||||||||||||||||||
| 132 | - | |||||||||||||||||||
| 133 | QWindow *QFbScreen::topWindow() const | - | ||||||||||||||||||
| 134 | { | - | ||||||||||||||||||
| 135 | foreach (QFbWindow *fbw, mWindowStack) | - | ||||||||||||||||||
| 136 |         if (fbw->window()->type() == Qt::Window || fbw->window()->type() == Qt::Dialog)
 
  | 0 | ||||||||||||||||||
| 137 |             return fbw->window(); never executed:  return fbw->window(); | 0 | ||||||||||||||||||
| 138 |     return 0; never executed:  return 0; | 0 | ||||||||||||||||||
| 139 | } | - | ||||||||||||||||||
| 140 | - | |||||||||||||||||||
| 141 | QWindow *QFbScreen::topLevelAt(const QPoint & p) const | - | ||||||||||||||||||
| 142 | { | - | ||||||||||||||||||
| 143 | foreach (QFbWindow *fbw, mWindowStack) { | - | ||||||||||||||||||
| 144 |         if (fbw->geometry().contains(p, false) && fbw->window()->isVisible())
 
  | 0 | ||||||||||||||||||
| 145 |             return fbw->window(); never executed:  return fbw->window(); | 0 | ||||||||||||||||||
| 146 |     } never executed:  end of block | 0 | ||||||||||||||||||
| 147 |     return 0; never executed:  return 0; | 0 | ||||||||||||||||||
| 148 | } | - | ||||||||||||||||||
| 149 | - | |||||||||||||||||||
| 150 | void QFbScreen::setDirty(const QRect &rect) | - | ||||||||||||||||||
| 151 | { | - | ||||||||||||||||||
| 152 | QRect intersection = rect.intersected(mGeometry); | - | ||||||||||||||||||
| 153 | QPoint screenOffset = mGeometry.topLeft(); | - | ||||||||||||||||||
| 154 | mRepaintRegion += intersection.translated(-screenOffset); // global to local translation | - | ||||||||||||||||||
| 155 | scheduleUpdate(); | - | ||||||||||||||||||
| 156 | } never executed:  end of block | 0 | ||||||||||||||||||
| 157 | - | |||||||||||||||||||
| 158 | void QFbScreen::scheduleUpdate() | - | ||||||||||||||||||
| 159 | { | - | ||||||||||||||||||
| 160 |     if (!mUpdatePending) {
  | 0 | ||||||||||||||||||
| 161 | mUpdatePending = true; | - | ||||||||||||||||||
| 162 | QCoreApplication::postEvent(this, new QEvent(QEvent::UpdateRequest)); | - | ||||||||||||||||||
| 163 |     } never executed:  end of block | 0 | ||||||||||||||||||
| 164 | } never executed:  end of block | 0 | ||||||||||||||||||
| 165 | - | |||||||||||||||||||
| 166 | void QFbScreen::setPhysicalSize(const QSize &size) | - | ||||||||||||||||||
| 167 | { | - | ||||||||||||||||||
| 168 | mPhysicalSize = size; | - | ||||||||||||||||||
| 169 | } never executed:  end of block | 0 | ||||||||||||||||||
| 170 | - | |||||||||||||||||||
| 171 | void QFbScreen::setGeometry(const QRect &rect) | - | ||||||||||||||||||
| 172 | { | - | ||||||||||||||||||
| 173 | delete mCompositePainter; | - | ||||||||||||||||||
| 174 | mCompositePainter = 0; | - | ||||||||||||||||||
| 175 | delete mScreenImage; | - | ||||||||||||||||||
| 176 | mGeometry = rect; | - | ||||||||||||||||||
| 177 | mScreenImage = new QImage(mGeometry.size(), mFormat); | - | ||||||||||||||||||
| 178 | invalidateRectCache(); | - | ||||||||||||||||||
| 179 | QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), geometry(), availableGeometry()); | - | ||||||||||||||||||
| 180 | resizeMaximizedWindows(); | - | ||||||||||||||||||
| 181 | } never executed:  end of block | 0 | ||||||||||||||||||
| 182 | - | |||||||||||||||||||
| 183 | void QFbScreen::generateRects() | - | ||||||||||||||||||
| 184 | { | - | ||||||||||||||||||
| 185 | mCachedRects.clear(); | - | ||||||||||||||||||
| 186 | QPoint screenOffset = mGeometry.topLeft(); | - | ||||||||||||||||||
| 187 | QRegion remainingScreen(mGeometry.translated(-screenOffset)); // global to local translation | - | ||||||||||||||||||
| 188 | - | |||||||||||||||||||
| 189 |     for (int i = 0; i < mWindowStack.length(); i++) {
  | 0 | ||||||||||||||||||
| 190 |         if (remainingScreen.isEmpty())
  | 0 | ||||||||||||||||||
| 191 |             break; never executed:  break; | 0 | ||||||||||||||||||
| 192 | #if 0 | - | ||||||||||||||||||
| 193 | if (!mWindowStack[i]->isVisible()) | - | ||||||||||||||||||
| 194 | continue; | - | ||||||||||||||||||
| 195 | if (mWindowStack[i]->isMinimized()) | - | ||||||||||||||||||
| 196 | continue; | - | ||||||||||||||||||
| 197 | - | |||||||||||||||||||
| 198 | if (!mWindowStack[i]->testAttribute(Qt::WA_TranslucentBackground)) { | - | ||||||||||||||||||
| 199 | QRect localGeometry = mWindowStack.at(i)->geometry().translated(-screenOffset); // global to local translation | - | ||||||||||||||||||
| 200 | remainingScreen -= localGeometry; | - | ||||||||||||||||||
| 201 | QRegion windowRegion(localGeometry); | - | ||||||||||||||||||
| 202 | windowRegion -= remainingScreen; | - | ||||||||||||||||||
| 203 | foreach (const QRect &rect, windowRegion.rects()) { | - | ||||||||||||||||||
| 204 | mCachedRects += QPair<QRect, int>(rect, i); | - | ||||||||||||||||||
| 205 | } | - | ||||||||||||||||||
| 206 | } | - | ||||||||||||||||||
| 207 | #endif | - | ||||||||||||||||||
| 208 |     } never executed:  end of block | 0 | ||||||||||||||||||
| 209 | const QVector<QRect> remainingScreenRects = remainingScreen.rects(); | - | ||||||||||||||||||
| 210 | mCachedRects.reserve(mCachedRects.count() + remainingScreenRects.count()); | - | ||||||||||||||||||
| 211 | foreach (const QRect &rect, remainingScreenRects) | - | ||||||||||||||||||
| 212 |         mCachedRects += QPair<QRect, int>(rect, -1); never executed:  mCachedRects += QPair<QRect, int>(rect, -1); | 0 | ||||||||||||||||||
| 213 | mIsUpToDate = true; | - | ||||||||||||||||||
| 214 | } never executed:  end of block | 0 | ||||||||||||||||||
| 215 | - | |||||||||||||||||||
| 216 | QRegion QFbScreen::doRedraw() | - | ||||||||||||||||||
| 217 | { | - | ||||||||||||||||||
| 218 | QPoint screenOffset = mGeometry.topLeft(); | - | ||||||||||||||||||
| 219 | - | |||||||||||||||||||
| 220 | QRegion touchedRegion; | - | ||||||||||||||||||
| 221 |     if (mCursor && mCursor->isDirty() && mCursor->isOnScreen()) {
 
 
  | 0 | ||||||||||||||||||
| 222 | QRect lastCursor = mCursor->dirtyRect(); | - | ||||||||||||||||||
| 223 | mRepaintRegion += lastCursor; | - | ||||||||||||||||||
| 224 |     } never executed:  end of block | 0 | ||||||||||||||||||
| 225 |     if (mRepaintRegion.isEmpty() && (!mCursor || !mCursor->isDirty())) {
 
 
  | 0 | ||||||||||||||||||
| 226 |         return touchedRegion; never executed:  return touchedRegion; | 0 | ||||||||||||||||||
| 227 | } | - | ||||||||||||||||||
| 228 | - | |||||||||||||||||||
| 229 | QVector<QRect> rects = mRepaintRegion.rects(); | - | ||||||||||||||||||
| 230 | - | |||||||||||||||||||
| 231 |     if (!mIsUpToDate)
  | 0 | ||||||||||||||||||
| 232 |         generateRects(); never executed:  generateRects(); | 0 | ||||||||||||||||||
| 233 | - | |||||||||||||||||||
| 234 |     if (!mCompositePainter)
  | 0 | ||||||||||||||||||
| 235 |         mCompositePainter = new QPainter(mScreenImage); never executed:  mCompositePainter = new QPainter(mScreenImage); | 0 | ||||||||||||||||||
| 236 | - | |||||||||||||||||||
| 237 |     for (int rectIndex = 0; rectIndex < mRepaintRegion.rectCount(); rectIndex++) {
  | 0 | ||||||||||||||||||
| 238 | QRegion rectRegion = rects[rectIndex]; | - | ||||||||||||||||||
| 239 | - | |||||||||||||||||||
| 240 |         for (int i = 0; i < mCachedRects.length(); i++) {
  | 0 | ||||||||||||||||||
| 241 | QRect screenSubRect = mCachedRects[i].first; | - | ||||||||||||||||||
| 242 | int layer = mCachedRects[i].second; | - | ||||||||||||||||||
| 243 | QRegion intersect = rectRegion.intersected(screenSubRect); | - | ||||||||||||||||||
| 244 | - | |||||||||||||||||||
| 245 |             if (intersect.isEmpty())
  | 0 | ||||||||||||||||||
| 246 |                 continue; never executed:  continue; | 0 | ||||||||||||||||||
| 247 | - | |||||||||||||||||||
| 248 | rectRegion -= intersect; | - | ||||||||||||||||||
| 249 | - | |||||||||||||||||||
| 250 | // we only expect one rectangle, but defensive coding... | - | ||||||||||||||||||
| 251 | foreach (const QRect &rect, intersect.rects()) { | - | ||||||||||||||||||
| 252 | bool firstLayer = true; | - | ||||||||||||||||||
| 253 |                 if (layer == -1) {
  | 0 | ||||||||||||||||||
| 254 | mCompositePainter->setCompositionMode(QPainter::CompositionMode_Source); | - | ||||||||||||||||||
| 255 | mCompositePainter->fillRect(rect, mScreenImage->hasAlphaChannel() ? Qt::transparent : Qt::black); | - | ||||||||||||||||||
| 256 | firstLayer = false; | - | ||||||||||||||||||
| 257 | layer = mWindowStack.size() - 1; | - | ||||||||||||||||||
| 258 |                 } never executed:  end of block | 0 | ||||||||||||||||||
| 259 | - | |||||||||||||||||||
| 260 |                 for (int layerIndex = layer; layerIndex != -1; layerIndex--) {
  | 0 | ||||||||||||||||||
| 261 |                     if (!mWindowStack[layerIndex]->window()->isVisible())
  | 0 | ||||||||||||||||||
| 262 |                         continue; never executed:  continue; | 0 | ||||||||||||||||||
| 263 | // if (mWindowStack[layerIndex]->isMinimized()) | - | ||||||||||||||||||
| 264 | // continue; | - | ||||||||||||||||||
| 265 | - | |||||||||||||||||||
| 266 | QRect windowRect = mWindowStack[layerIndex]->geometry().translated(-screenOffset); | - | ||||||||||||||||||
| 267 | QRect windowIntersect = rect.translated(-windowRect.left(), | - | ||||||||||||||||||
| 268 | -windowRect.top()); | - | ||||||||||||||||||
| 269 | - | |||||||||||||||||||
| 270 | - | |||||||||||||||||||
| 271 | QFbBackingStore *backingStore = mWindowStack[layerIndex]->backingStore(); | - | ||||||||||||||||||
| 272 | - | |||||||||||||||||||
| 273 |                     if (backingStore) {
  | 0 | ||||||||||||||||||
| 274 | backingStore->lock(); | - | ||||||||||||||||||
| 275 | mCompositePainter->drawImage(rect, backingStore->image(), windowIntersect); | - | ||||||||||||||||||
| 276 | backingStore->unlock(); | - | ||||||||||||||||||
| 277 |                     } never executed:  end of block | 0 | ||||||||||||||||||
| 278 |                     if (firstLayer) {
  | 0 | ||||||||||||||||||
| 279 | firstLayer = false; | - | ||||||||||||||||||
| 280 |                     } never executed:  end of block | 0 | ||||||||||||||||||
| 281 |                 } never executed:  end of block | 0 | ||||||||||||||||||
| 282 |             } never executed:  end of block | 0 | ||||||||||||||||||
| 283 |         } never executed:  end of block | 0 | ||||||||||||||||||
| 284 |     } never executed:  end of block | 0 | ||||||||||||||||||
| 285 | - | |||||||||||||||||||
| 286 | QRect cursorRect; | - | ||||||||||||||||||
| 287 |     if (mCursor && (mCursor->isDirty() || mRepaintRegion.intersects(mCursor->lastPainted()))) {
 
 
  | 0 | ||||||||||||||||||
| 288 | mCompositePainter->setCompositionMode(QPainter::CompositionMode_SourceOver); | - | ||||||||||||||||||
| 289 | cursorRect = mCursor->drawCursor(*mCompositePainter); | - | ||||||||||||||||||
| 290 | touchedRegion += cursorRect; | - | ||||||||||||||||||
| 291 |     } never executed:  end of block | 0 | ||||||||||||||||||
| 292 | touchedRegion += mRepaintRegion; | - | ||||||||||||||||||
| 293 | mRepaintRegion = QRegion(); | - | ||||||||||||||||||
| 294 | - | |||||||||||||||||||
| 295 | - | |||||||||||||||||||
| 296 | - | |||||||||||||||||||
| 297 | // qDebug() << "QFbScreen::doRedraw" << mWindowStack.size() << mScreenImage->size() << touchedRegion; | - | ||||||||||||||||||
| 298 | - | |||||||||||||||||||
| 299 |     return touchedRegion; never executed:  return touchedRegion; | 0 | ||||||||||||||||||
| 300 | } | - | ||||||||||||||||||
| 301 | - | |||||||||||||||||||
| 302 | QFbWindow *QFbScreen::windowForId(WId wid) const | - | ||||||||||||||||||
| 303 | { | - | ||||||||||||||||||
| 304 |     for (int i = 0; i < mWindowStack.count(); ++i)
  | 0 | ||||||||||||||||||
| 305 |         if (mWindowStack[i]->winId() == wid)
  | 0 | ||||||||||||||||||
| 306 |             return mWindowStack[i]; never executed:  return mWindowStack[i]; | 0 | ||||||||||||||||||
| 307 | - | |||||||||||||||||||
| 308 |     return 0; never executed:  return 0; | 0 | ||||||||||||||||||
| 309 | } | - | ||||||||||||||||||
| 310 | - | |||||||||||||||||||
| 311 | QT_END_NAMESPACE | - | ||||||||||||||||||
| 312 | - | |||||||||||||||||||
| Source code | Switch to Preprocessed file |