Ignore:
Timestamp:
Feb 13, 2010, 9:59:04 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

gui: Fixed assertion in QVector::at() at startup.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gui/painting/qregion_pm.cpp

    r569 r570  
    111111    self->d->height = targetHeight;
    112112    if (d->qt_rgn) {
    113         if (d->qt_rgn->numRects) {
    114             PRECTL rcls = new RECTL[d->qt_rgn->numRects];
    115             for (int i = 0; i < d->qt_rgn->numRects; ++i) {
    116                 QRect r = d->qt_rgn->rects.at(i);
    117                 // note RECTL is inclusive-exclusive here
    118                 rcls[i].xLeft = r.left();
    119                 rcls[i].yBottom = d->height - (r.bottom() + 1);
    120                 rcls[i].xRight = r.right() + 1;
    121                 rcls[i].yTop = d->height - r.top();
     113        if (d->qt_rgn->numRects > 0) {
     114            if (d->qt_rgn->numRects == 1) {
     115                // d->qt_rgn->rects is empty, use d->qt_rgn->extents instead
     116                const QRect r = d->qt_rgn->extents;
     117                RECTL rcl = { r.left(), d->height - (r.bottom() + 1),
     118                              r.right() + 1, d->height - r.top() };
     119                self->d->rgn = GpiCreateRegion(qt_display_ps(), 1, &rcl);
     120            } else {
     121                PRECTL rcls = new RECTL[d->qt_rgn->numRects];
     122                for (int i = 0; i < d->qt_rgn->numRects; ++i) {
     123                    QRect r = d->qt_rgn->rects.at(i);
     124                    // note RECTL is inclusive-exclusive here
     125                    rcls[i].xLeft = r.left();
     126                    rcls[i].yBottom = d->height - (r.bottom() + 1);
     127                    rcls[i].xRight = r.right() + 1;
     128                    rcls[i].yTop = d->height - r.top();
     129                }
     130                self->d->rgn = GpiCreateRegion(qt_display_ps(),
     131                                               d->qt_rgn->numRects, rcls);
     132                delete[] rcls;
    122133            }
    123             self->d->rgn = GpiCreateRegion(qt_display_ps(),
    124                                            d->qt_rgn->numRects, rcls);
    125134            return;
    126135        }
Note: See TracChangeset for help on using the changeset viewer.