pull/34892/head
Trey Moen 5 months ago
parent 951250d86c
commit 4e0a8f3094
  1. 2
      selfdrive/ui/qt/widgets/cameraview.cc
  2. 21
      tools/clip/application.cc

@ -69,7 +69,7 @@ CameraWidget::CameraWidget(std::string stream_name, VisionStreamType type, QWidg
setAttribute(Qt::WA_OpaquePaintEvent); setAttribute(Qt::WA_OpaquePaintEvent);
qRegisterMetaType<std::set<VisionStreamType>>("availableStreams"); qRegisterMetaType<std::set<VisionStreamType>>("availableStreams");
QObject::connect(this, &CameraWidget::vipcThreadConnected, this, &CameraWidget::vipcConnected, Qt::BlockingQueuedConnection); QObject::connect(this, &CameraWidget::vipcThreadConnected, this, &CameraWidget::vipcConnected, Qt::BlockingQueuedConnection);
QObject::connect(this, &CameraWidget::vipcThreadFrameReceived, this, &CameraWidget::vipcFrameReceived, Qt::QueuedConnection); // QObject::connect(this, &CameraWidget::vipcThreadFrameReceived, this, &CameraWidget::vipcFrameReceived, Qt::QueuedConnection);
QObject::connect(this, &CameraWidget::vipcAvailableStreamsUpdated, this, &CameraWidget::availableStreamsUpdated, Qt::QueuedConnection); QObject::connect(this, &CameraWidget::vipcAvailableStreamsUpdated, this, &CameraWidget::availableStreamsUpdated, Qt::QueuedConnection);
QObject::connect(QApplication::instance(), &QCoreApplication::aboutToQuit, this, &CameraWidget::stopVipcThread); QObject::connect(QApplication::instance(), &QCoreApplication::aboutToQuit, this, &CameraWidget::stopVipcThread);
} }

@ -71,22 +71,25 @@ Application::Application(int argc, char *argv[], QObject *parent) : QObject(pare
recorderThread = new QThread; recorderThread = new QThread;
recorder = new Recorder(outputFile.toStdString()); recorder = new Recorder(outputFile.toStdString());
recorder->moveToThread(recorderThread); recorder->moveToThread(recorderThread);
QObject::connect(recorderThread, &QThread::finished, recorder, &QObject::deleteLater); connect(recorderThread, &QThread::finished, recorder, &QObject::deleteLater);
connect(app, &QCoreApplication::aboutToQuit, recorderThread, &QThread::quit);
QObject::connect(window, &OnroadWindow::redrew, this, [&]() { QTimer *loop = new QTimer;
connect(loop, &QTimer::timeout, this, [&]() {
if (!window->isVisible()) {
return;
}
QElapsedTimer timer; QElapsedTimer timer;
timer.start(); timer.start();
QPixmap pixmap = window->grab(); QPixmap pixmap = window->grab();
// qDebug() << "pixmap took " << timer.elapsed() << " ms"; qDebug() << "pixmap took " << timer.elapsed() << " ms";
timer.restart(); timer.restart();
recorder->saveFrame(std::make_shared<QPixmap>(std::move(pixmap))); recorder->saveFrame(std::make_shared<QPixmap>(std::move(pixmap)));
// qDebug() << "save frame took" << timer.elapsed() << " ms"; });
}, Qt::QueuedConnection); loop->start(1000 / UI_FREQ);
QObject::connect(app, &QCoreApplication::aboutToQuit, recorderThread, &QThread::quit);
// window->setAttribute(Qt::WA_DontShowOnScreen); window->setAttribute(Qt::WA_DontShowOnScreen);
window->setAttribute(Qt::WA_Mapped); window->setAttribute(Qt::WA_OpaquePaintEvent);
window->setAttribute(Qt::WA_NoSystemBackground); window->setAttribute(Qt::WA_NoSystemBackground);
recorderThread->start(); recorderThread->start();

Loading…
Cancel
Save