void BlurMgr::Apply(TimeValue t, Bitmap *bm, RenderGlobalContext *gc, CheckAbortCallback *_checkAbort) { m_checkAbort = _checkAbort; int type; (WORD*)bm->GetStoragePtr(&type); assert(type == BMM_TRUE_48); if(gc && gc->renderer) { //Check for SSE support IRenderSSEControl* rSSE = (IRenderSSEControl *)( gc->renderer->GetInterface( IRenderSSEControl::IID ) ); if(rSSE && rSSE->IsSSEEnabled() && IsSSE()) gBlurSSE_Enabled = TRUE; else gBlurSSE_Enabled = FALSE; } else { if(IsSSE()) gBlurSSE_Enabled = TRUE; else gBlurSSE_Enabled = FALSE; } // check for active selections BOOL selsActive = false; for (int i=0; (!selsActive && i<numSels); i++) pbSelData->GetValue(m_selActiveIds[i], t, selsActive, FOREVER); if (!selsActive) return; // if source bitmap has changed since last call if ( m_lastBMModifyID != bm->GetModifyID() ) { m_lastBMModifyID = bm->GetModifyID(); m_compValid = false; if ( (bm->Width() != m_imageW) || (bm->Height() != m_imageH) ) { m_imageW = bm->Width(); m_imageH = bm->Height(); m_compMap.resize(m_imageSz = m_imageW * m_imageH); } } updateSelections(t, bm, gc); blur(t, bm, gc, selsActive); return; }
void MainWindow::readListOutput() { static QRegExp nameRegExp("\\sName: (alsa.+)$"); static QRegExp deviceDescRegExp("^\\s+device\\.description = \"(.+)\"\\s*$"); if(!deviceDescRegExp.isValid()) qWarning() << deviceDescRegExp.errorString(); disconnect(processConnection); QString alsaDeviceName; //QDebug debug(QtDebugMsg); while(process.canReadLine()) { QByteArray line = process.readLine(); if(nameRegExp.exactMatch(line)) { alsaDeviceName = nameRegExp.cap(1).trimmed(); qDebug() << "device found" << alsaDeviceName; } else if(!alsaDeviceName.isEmpty() && deviceDescRegExp.exactMatch(line)) { QString deviceName = deviceDescRegExp.cap(1).trimmed(); qDebug() << "device name found" << deviceName; devices.insert(alsaDeviceName, deviceName); alsaDeviceName.clear(); }/* else debug << line;*/ } ui->addStream->setEnabled(true); ui->tableWidget->setEnabled(true); ui->startRecording->setEnabled(true); ui->actionRefresh->setEnabled(true); ui->status->setText("Ready"); ui->progressBar->hide(); if(ui->tableWidget->rowCount() == 0) on_addStream_clicked(); else { // TODO: Clear hanging pointers updateSelections(); } }
void MainWindow::on_addStream_clicked() { int rowID = ui->tableWidget->rowCount(); ui->tableWidget->insertRow(rowID); QComboBox* sinkSelection = new QComboBox(); QPushButton* removeStream = new QPushButton("Remove"); if(rowID == 0) removeStream->setEnabled(false); else if(rowID == 1) ui->tableWidget->cellWidget(0, 1)->setEnabled(true); connect(removeStream, &QPushButton::clicked, [=] () { for(int i=0; i<ui->tableWidget->rowCount(); i++) { if(ui->tableWidget->cellWidget(i, 0) == sinkSelection) { ui->tableWidget->removeRow(i); break; } } ui->addStream->setEnabled(true); if(ui->tableWidget->rowCount() == 1) { ui->tableWidget->cellWidget(0, 1)->setEnabled(false); QComboBox* rowCombo = (QComboBox*)ui->tableWidget->cellWidget(0, 0); const QStandardItemModel* model = qobject_cast<const QStandardItemModel*>(rowCombo->model()); for(int r=0; r<rowCombo->count(); r++) { if(r == rowCombo->currentIndex()) continue; QStandardItem* item = model->item(r); item->setData(1 | 32, Qt::UserRole - 1); } } else updateSelections(); }); int defaultItem = 0; bool lastWasDisabled = true; QHashIterator<QString, QString> it(devices); while(it.hasNext()) { it.next(); bool disabled = false; sinkSelection->addItem(it.value(), it.key()); for(int i=0; i<rowID; i++) { QComboBox* rowCombo = (QComboBox*)ui->tableWidget->cellWidget(i, 0); if(rowCombo->currentData() == it.key()) { disabled = true; break; } } if(lastWasDisabled) { if(disabled) defaultItem ++; else lastWasDisabled = false; } } if(defaultItem > 0) sinkSelection->setCurrentIndex(defaultItem); if(rowID == devices.size()-1) ui->addStream->setEnabled(false); ui->tableWidget->setCellWidget(rowID, 0, sinkSelection); ui->tableWidget->setCellWidget(rowID, 1, removeStream); updateSelections(); connect(sinkSelection, &QComboBox::currentTextChanged, [=] (QString) { updateSelections(); }); }