yuzu-emu
/
yuzu-android
Archived
1
0
Fork 0

Qt6: Disable IR Sensor when compiling with Qt6

Gating the IR Sensor code behind a macro like so
`#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA`

The YUZU_USE_QT_MULTIMEDIA flag is implemented in later commit

Also the locale fix in src/yuzu/main.cpp is now gated against Qt6,
as it causes compilation error
This commit is contained in:
Kyle Kienapfel 2022-08-31 03:10:34 -07:00
parent 405d685101
commit ad3ee5c52b
6 changed files with 25 additions and 0 deletions

View File

@ -4,8 +4,10 @@
#include <glad/glad.h> #include <glad/glad.h>
#include <QApplication> #include <QApplication>
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
#include <QCameraImageCapture> #include <QCameraImageCapture>
#include <QCameraInfo> #include <QCameraInfo>
#endif
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QMessageBox> #include <QMessageBox>
#include <QPainter> #include <QPainter>
@ -707,6 +709,7 @@ void GRenderWindow::TouchEndEvent() {
} }
void GRenderWindow::InitializeCamera() { void GRenderWindow::InitializeCamera() {
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
constexpr auto camera_update_ms = std::chrono::milliseconds{50}; // (50ms, 20Hz) constexpr auto camera_update_ms = std::chrono::milliseconds{50}; // (50ms, 20Hz)
if (!Settings::values.enable_ir_sensor) { if (!Settings::values.enable_ir_sensor) {
return; return;
@ -760,18 +763,22 @@ void GRenderWindow::InitializeCamera() {
connect(camera_timer.get(), &QTimer::timeout, [this] { RequestCameraCapture(); }); connect(camera_timer.get(), &QTimer::timeout, [this] { RequestCameraCapture(); });
// This timer should be dependent of camera resolution 5ms for every 100 pixels // This timer should be dependent of camera resolution 5ms for every 100 pixels
camera_timer->start(camera_update_ms); camera_timer->start(camera_update_ms);
#endif
} }
void GRenderWindow::FinalizeCamera() { void GRenderWindow::FinalizeCamera() {
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
if (camera_timer) { if (camera_timer) {
camera_timer->stop(); camera_timer->stop();
} }
if (camera) { if (camera) {
camera->unload(); camera->unload();
} }
#endif
} }
void GRenderWindow::RequestCameraCapture() { void GRenderWindow::RequestCameraCapture() {
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
if (!Settings::values.enable_ir_sensor) { if (!Settings::values.enable_ir_sensor) {
return; return;
} }
@ -788,6 +795,7 @@ void GRenderWindow::RequestCameraCapture() {
pending_camera_snapshots++; pending_camera_snapshots++;
camera_capture->capture(); camera_capture->capture();
#endif
} }
void GRenderWindow::OnCameraCapture(int requestId, const QImage& img) { void GRenderWindow::OnCameraCapture(int requestId, const QImage& img) {

View File

@ -241,8 +241,10 @@ private:
bool is_virtual_camera; bool is_virtual_camera;
int pending_camera_snapshots; int pending_camera_snapshots;
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
std::unique_ptr<QCamera> camera; std::unique_ptr<QCamera> camera;
std::unique_ptr<QCameraImageCapture> camera_capture; std::unique_ptr<QCameraImageCapture> camera_capture;
#endif
std::unique_ptr<QTimer> camera_timer; std::unique_ptr<QTimer> camera_timer;
Core::System& system; Core::System& system;

View File

@ -2,8 +2,11 @@
// SPDX-License-Identifier: GPL-3.0-or-later // SPDX-License-Identifier: GPL-3.0-or-later
#include <memory> #include <memory>
#include <QtCore>
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
#include <QCameraImageCapture> #include <QCameraImageCapture>
#include <QCameraInfo> #include <QCameraInfo>
#endif
#include <QStandardItemModel> #include <QStandardItemModel>
#include <QTimer> #include <QTimer>
@ -33,6 +36,7 @@ ConfigureCamera::ConfigureCamera(QWidget* parent, InputCommon::InputSubsystem* i
ConfigureCamera::~ConfigureCamera() = default; ConfigureCamera::~ConfigureCamera() = default;
void ConfigureCamera::PreviewCamera() { void ConfigureCamera::PreviewCamera() {
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
const auto index = ui->ir_sensor_combo_box->currentIndex(); const auto index = ui->ir_sensor_combo_box->currentIndex();
bool camera_found = false; bool camera_found = false;
const QList<QCameraInfo> cameras = QCameraInfo::availableCameras(); const QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
@ -101,6 +105,7 @@ void ConfigureCamera::PreviewCamera() {
}); });
camera_timer->start(250); camera_timer->start(250);
#endif
} }
void ConfigureCamera::DisplayCapturedFrame(int requestId, const QImage& img) { void ConfigureCamera::DisplayCapturedFrame(int requestId, const QImage& img) {
@ -133,11 +138,13 @@ void ConfigureCamera::LoadConfiguration() {
ui->ir_sensor_combo_box->clear(); ui->ir_sensor_combo_box->clear();
input_devices.push_back("Auto"); input_devices.push_back("Auto");
ui->ir_sensor_combo_box->addItem(tr("Auto")); ui->ir_sensor_combo_box->addItem(tr("Auto"));
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
const auto cameras = QCameraInfo::availableCameras(); const auto cameras = QCameraInfo::availableCameras();
for (const QCameraInfo& cameraInfo : cameras) { for (const QCameraInfo& cameraInfo : cameras) {
input_devices.push_back(cameraInfo.deviceName().toStdString()); input_devices.push_back(cameraInfo.deviceName().toStdString());
ui->ir_sensor_combo_box->addItem(cameraInfo.description()); ui->ir_sensor_combo_box->addItem(cameraInfo.description());
} }
#endif
const auto current_device = Settings::values.ir_sensor_device.GetValue(); const auto current_device = Settings::values.ir_sensor_device.GetValue();

View File

@ -46,8 +46,10 @@ private:
bool is_virtual_camera; bool is_virtual_camera;
int pending_snapshots; int pending_snapshots;
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
std::unique_ptr<QCamera> camera; std::unique_ptr<QCamera> camera;
std::unique_ptr<QCameraImageCapture> camera_capture; std::unique_ptr<QCameraImageCapture> camera_capture;
#endif
std::unique_ptr<QTimer> camera_timer; std::unique_ptr<QTimer> camera_timer;
std::vector<std::string> input_devices; std::vector<std::string> input_devices;
std::unique_ptr<Ui::ConfigureCamera> ui; std::unique_ptr<Ui::ConfigureCamera> ui;

View File

@ -194,4 +194,8 @@ void ConfigureInputAdvanced::UpdateUIEnabled() {
ui->mouse_panning->setEnabled(!ui->mouse_enabled->isChecked()); ui->mouse_panning->setEnabled(!ui->mouse_enabled->isChecked());
ui->mouse_panning_sensitivity->setEnabled(!ui->mouse_enabled->isChecked()); ui->mouse_panning_sensitivity->setEnabled(!ui->mouse_enabled->isChecked());
ui->ring_controller_configure->setEnabled(ui->enable_ring_controller->isChecked()); ui->ring_controller_configure->setEnabled(ui->enable_ring_controller->isChecked());
#if QT_VERSION > QT_VERSION_CHECK(6, 0, 0) || !defined(YUZU_USE_QT_MULTIMEDIA)
ui->enable_ir_sensor->setEnabled(false);
ui->camera_configure->setEnabled(false);
#endif
} }

View File

@ -4194,10 +4194,12 @@ int main(int argc, char* argv[]) {
// so we can see if we get \u3008 instead // so we can see if we get \u3008 instead
// TL;DR all other number formats are consecutive in unicode code points // TL;DR all other number formats are consecutive in unicode code points
// This bug is fixed in Qt6, specifically 6.0.0-alpha1 // This bug is fixed in Qt6, specifically 6.0.0-alpha1
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
const QLocale locale = QLocale::system(); const QLocale locale = QLocale::system();
if (QStringLiteral("\u3008") == locale.toString(1)) { if (QStringLiteral("\u3008") == locale.toString(1)) {
QLocale::setDefault(QLocale::system().name()); QLocale::setDefault(QLocale::system().name());
} }
#endif
// Qt changes the locale and causes issues in float conversion using std::to_string() when // Qt changes the locale and causes issues in float conversion using std::to_string() when
// generating shaders // generating shaders