void InputDaemon::clearBitArrayStatusInstances() { QHashIterator<InputDevice*, InputDeviceBitArrayStatus*> genIter(releaseEventsGenerated); while (genIter.hasNext()) { InputDeviceBitArrayStatus *temp = genIter.next().value(); if (temp) { delete temp; temp = 0; } } releaseEventsGenerated.clear(); QHashIterator<InputDevice*, InputDeviceBitArrayStatus*> pendIter(pendingEventValues); while (pendIter.hasNext()) { InputDeviceBitArrayStatus *temp = pendIter.next().value(); if (temp) { delete temp; temp = 0; } } pendingEventValues.clear(); }
void GrTargetCommands::flush(GrInOrderDrawBuffer* iodb) { if (fCmdBuffer.empty()) { return; } GrGpu* gpu = iodb->getGpu(); // Loop over all batches and generate geometry CmdBuffer::Iter genIter(fCmdBuffer); while (genIter.next()) { if (Cmd::kDrawBatch_CmdType == genIter->type()) { DrawBatch* db = reinterpret_cast<DrawBatch*>(genIter.get()); fBatchTarget.resetNumberOfDraws(); db->fBatch->generateGeometry(&fBatchTarget, db->fState->getPipeline()); db->fBatch->setNumberOfDraws(fBatchTarget.numberOfDraws()); } } fBatchTarget.preFlush(); CmdBuffer::Iter iter(fCmdBuffer); while (iter.next()) { GrGpuTraceMarker newMarker("", -1); SkString traceString; if (iter->isTraced()) { traceString = iodb->getCmdString(iter->markerID()); newMarker.fMarker = traceString.c_str(); gpu->addGpuTraceMarker(&newMarker); } iter->execute(gpu); if (iter->isTraced()) { gpu->removeGpuTraceMarker(&newMarker); } } fBatchTarget.postFlush(); }
void InputDaemon::modifyUnplugEvents(QQueue<SDL_Event> *sdlEventQueue) { QHashIterator<InputDevice*, InputDeviceBitArrayStatus*> genIter(releaseEventsGenerated); while (genIter.hasNext()) { genIter.next(); InputDevice *device = genIter.key(); InputDeviceBitArrayStatus *generatedTemp = genIter.value(); QBitArray tempBitArray = generatedTemp->generateFinalBitArray(); //qDebug() << "ARRAY: " << tempBitArray; unsigned int bitArraySize = tempBitArray.size(); //qDebug() << "ARRAY SIZE: " << bitArraySize; if (bitArraySize > 0 && tempBitArray.count(true) == bitArraySize) { if (pendingEventValues.contains(device)) { InputDeviceBitArrayStatus *pendingTemp = pendingEventValues.value(device); QBitArray pendingBitArray = pendingTemp->generateFinalBitArray(); QBitArray unplugBitArray = createUnplugEventBitArray(device); unsigned int pendingBitArraySize = pendingBitArray.size(); if (bitArraySize == pendingBitArraySize && pendingBitArray == unplugBitArray) { QQueue<SDL_Event> tempQueue; while (!sdlEventQueue->isEmpty()) { SDL_Event event = sdlEventQueue->dequeue(); switch (event.type) { case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: { tempQueue.enqueue(event); break; } case SDL_JOYAXISMOTION: { if (event.jaxis.which != device->getSDLJoystickID()) { tempQueue.enqueue(event); } else { InputDevice *joy = trackjoysticks.value(event.jaxis.which); if (joy) { JoyAxis *axis = joy->getActiveSetJoystick()->getJoyAxis(event.jaxis.axis); if (axis) { if (axis->getThrottle() != JoyAxis::NormalThrottle) { event.jaxis.value = axis->getProperReleaseValue(); } } } tempQueue.enqueue(event); } break; } case SDL_JOYHATMOTION: { tempQueue.enqueue(event); break; } case SDL_CONTROLLERAXISMOTION: { if (event.caxis.which != device->getSDLJoystickID()) { tempQueue.enqueue(event); } else { InputDevice *joy = trackcontrollers.value(event.caxis.which); if (joy) { SetJoystick* set = joy->getActiveSetJoystick(); JoyAxis *axis = set->getJoyAxis(event.caxis.axis); if (axis) { if (event.caxis.axis == SDL_CONTROLLER_AXIS_TRIGGERLEFT || event.caxis.axis == SDL_CONTROLLER_AXIS_TRIGGERRIGHT) { event.caxis.value = axis->getProperReleaseValue(); } } } tempQueue.enqueue(event); } break; } case SDL_CONTROLLERBUTTONDOWN: case SDL_CONTROLLERBUTTONUP: { tempQueue.enqueue(event); break; } case SDL_JOYDEVICEREMOVED: case SDL_JOYDEVICEADDED: { tempQueue.enqueue(event); break; } default: { tempQueue.enqueue(event); } } } sdlEventQueue->swap(tempQueue); } } } } }