Ejemplo n.º 1
0
    void Lock::DBWrite::unlockDB() {
        if( _weLocked ) {
            recordTime();  // for lock stats
        
            if ( _nested )
                lockState().unlockedNestable();
            else
                lockState().unlockedOther();
    
            _weLocked->unlock();
        }

        if( _locked_w ) {
            if (DB_LEVEL_LOCKING_ENABLED) {
                qlk.unlock_w();
            } else {
                qlk.unlock_W();
            }
        }
        if( _locked_W ) {
            qlk.unlock_W();
        }
        _weLocked = 0;
        _locked_W = _locked_w = false;
    }
Ejemplo n.º 2
0
    void Lock::DBWrite::unlockDB() {
        if( _weLocked ) {
            recordTime();  // for lock stats
        
            if ( _nested )
                _lockState->unlockedNestable();
            else
                _lockState->unlockedOther();
    
            _weLocked->unlock();
        }

        if( _locked_w ) {
            wassert(_lockState->threadState() == 'w');
            _lockState->unlocked();
            qlk.q.unlock_w();
        }

        if( _locked_W ) {
            qlk.unlock_W(_lockState);
        }

        _weLocked = 0;
        _locked_W = _locked_w = false;
    }
Ejemplo n.º 3
0
 Lock::GlobalWrite::~GlobalWrite() {
     if (!noop) {
         recordTime();  // for lock stats
         qlk.unlock_W();
         return;
     }
 }
Ejemplo n.º 4
0
 void measure()
 {
     Sample sample;
     recordTime(sample);
     measureMemoryUsage(sample);
     m_samples.push_back(sample);
 }
Ejemplo n.º 5
0
    Lock::GlobalWrite::~GlobalWrite() {
        // If the lock state is R, this means downgrade happened and this is only for fsyncLock.
        invariant(_lockState->isW() || _lockState->isR());

        _lockState->unlockAll();
        recordTime();
    }
Ejemplo n.º 6
0
    void Lock::DBLock::unlockDB() {
        _lockState->unlock(_id);

        // The last release reports time the lock was held
        if (_lockState->unlockAll()) {
            recordTime();
        }
    }
Ejemplo n.º 7
0
    void event(StatsEventId eventId)
    {
        Event event;
        recordTime(event);
        event.eventId = eventId;

        wxMutexLocker locker(m_eventsMutex);
        m_events.push_back(event);
    }
Ejemplo n.º 8
0
 Lock::GlobalWrite::~GlobalWrite() {
     if( noop ) { 
         return;
     }
     recordTime();  // for lock stats
     if (_lockState->threadState() == 'R') { // we downgraded
         qlk.unlock_R(_lockState);
     }
     else {
         qlk.unlock_W(_lockState);
     }
 }
Ejemplo n.º 9
0
bool Cutscenes::subtitlesWait(uint minTime) {
	EventsManager &events = *_vm->_events;

	events.updateGameCounter();
	recordTime();
	while (events.timeElapsed() < minTime || _subtitleSize != 0) {
		events.pollEventsAndWait();
		if (events.isKeyMousePressed())
			return false;

		showSubtitles();
	}

	return true;
}
Ejemplo n.º 10
0
    void Lock::DBRead::unlockDB() {
        if( _weLocked ) {
            recordTime();  // for lock stats
        
            if( _nested )
                lockState().unlockedNestable();
            else
                lockState().unlockedOther();

            _weLocked->unlock_shared();
        }

        if( _locked_r ) {
            qlk.unlock_r();
        }
        _weLocked = 0;
        _locked_r = false;
    }
Ejemplo n.º 11
0
    void Lock::DBRead::unlockDB() {

        if (supportsDocLocking()) {
            if (nsIsFull(_ns)) {
                const newlm::ResourceId resIdCollection(newlm::RESOURCE_COLLECTION, _ns);
                _lockState->unlock(resIdCollection);
            }
        }

        const StringData db = nsToDatabaseSubstring(_ns);
        const newlm::ResourceId resIdDb(newlm::RESOURCE_DATABASE, db);
        _lockState->unlock(resIdDb);

        // The last release reports time the lock was held
        if (_lockState->unlockGlobal()) {
            recordTime();
        }
    }
Ejemplo n.º 12
0
    void Lock::DBRead::unlockDB() {
        if( _weLocked ) {
            recordTime();  // for lock stats
        
            if( _nested )
                _lockState->unlockedNestable();
            else
                _lockState->unlockedOther();

            _weLocked->unlock_shared();
        }

        if( _locked_r ) {
            wassert(_lockState->threadState() == 'r');
            _lockState->unlocked();
            qlk.q.unlock_r();
        }
        _weLocked = 0;
        _locked_r = false;
    }
Ejemplo n.º 13
0
    void Lock::GlobalRead::_tempRelease() { 
        invariant(_lockState->isR());

        invariant(_lockState->unlockGlobal());
        recordTime();
    }
Ejemplo n.º 14
0
void Cutscenes::resetSubtitles(uint lineNum, uint defaultSize) {
	_subtitleLineNum = lineNum;
	_subtitleSize = defaultSize;
	recordTime();
}
Ejemplo n.º 15
0
 Lock::GlobalRead::~GlobalRead() {
     if( !noop ) {
         recordTime();  // for lock stats
         qlk.unlock_R(_lockState);
     }
 }
Ejemplo n.º 16
0
    void Lock::GlobalWrite::_tempRelease() { 
        invariant(_lockState->isW());

        invariant(_lockState->unlockAll());
        recordTime();
    }
Ejemplo n.º 17
0
void WindowProxy::BackgroundTask::operator()()
{
    if (!window)
        return;

    unsigned command;
    while (!((command = sleep()) & Abort)) {
        try {
            if (!window->getWindowPtr()) {
                state = Init;
                continue;
            }

            //
            // Restart
            //
            if (command & Restart) {
                deleteView();
                state = Init;
            }

            // A binding document does not need a view.
            if (window->isBindingDocumentWindow()) {
                state = Done;
                continue;
            }

            //
            // Cascade
            //
            if (!view || (command & Cascade)) {
                state = Cascading;
                recordTime("%*sselector matching begin", window->windowDepth * 2, "");
                if (!view)
                    view = new(std::nothrow) ViewCSSImp(window->getWindowPtr());
                if (view) {
                    view->constructComputedStyles();
                    state = Cascaded;
                } else
                    state = Init;
                recordTime("%*sselector matching end", window->windowDepth * 2, "");
                continue;
            }

            //
            // Layout
            //
            if (command & Layout) {
                state = Layouting;
                view->setSize(window->width, window->height);   // TODO: sync with mainloop
                recordTime("%*sstyle recalculation begin", window->windowDepth * 2, "");
                view->calculateComputedStyles();
                recordTime("%*sstyle recalculation end", window->windowDepth * 2, "");
                recordTime("%*sreflow begin", window->windowDepth * 2, "");
                view->layOut();
                recordTime("%*sreflow end", window->windowDepth * 2, "");

                // Even though every view flag should have been cleared now,
                // check them here and clear all of them after dumping the tree.
                if (view->gatherFlags() & ~Box::NEED_REPAINT) {
                    std::cerr << "warning: reflow flags are not fully cleared:\n";
                    int level = getLogLevel();
                    if (level < 3)
                        setLogLevel(3);
                    view->dump();
                    setLogLevel(level);
                    view->clearFlags();
                }

                view->setFlags(Box::NEED_REPAINT);
            }

            state = Done;
        } catch (const std::exception& e) {
            std::cerr << "WindowProxy::BackgroundTask: " << e.what() << "\n";
            throw;
            // TODO: Recover from exceptions
        }
    }
}
Ejemplo n.º 18
0
 Lock::GlobalRead::~GlobalRead() {
     _lockState->unlockAll();
     recordTime();
 }