mirror of
https://github.com/azahar-emu/azahar
synced 2025-11-20 10:30:00 +01:00
* remove the telemetry except from the renderers as I'm not being capable to remove it from there
* remove the telemetry except from the renderers as I'm not being capable to remove it from there
* Remove remainder of non-functional Telemetry and Citra Web Services
Squashed commit of the following:
commit f6dd4d4579c91db323877f0d08b9c01c82e1bb32
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 14:02:26 2024 -0600
gl_driver.h: add back missing functions
commit 8f14384e7a7b763c3f2ccb3af6b5a59df641d9ee
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 13:56:16 2024 -0600
gl_driver.cpp: add back missing functions
commit 5c802524b01a6eb05952d88ccf9dd78d63baee0a
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 13:39:46 2024 -0600
apply clang-format
commit e8f62a7d3ee8a3da885a28bce21bcfcb84f13a84
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 13:16:22 2024 -0600
remove web_tab
commit ced7f1e4909ae7b2714a96e3c3fa0500e8c62968
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 13:13:47 2024 -0600
remove unused call?
commit f10e05da887e4570853fae2bd55a71087b4bcc77
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 13:03:47 2024 -0600
fix build errors
commit 0489c1770b4b48d51f626145ae9235d3c81029fc
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 12:54:35 2024 -0600
Remove deleted files
commit b2eb56f5a1f01663cc9874d99fe77ee64b48622b
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 12:43:17 2024 -0600
Remove ConfigureWeb
commit b96f7c724006b2c5ee2272becaa70584fe90d012
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 11:49:51 2024 -0600
remove unused DebugHandler
commit 91ddf16f63f9ae07b0cb2768171728dc878d1653
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 11:41:31 2024 -0600
remove CollectToolingInfo() reference
commit 3909ac0502f23f8fb54944b53d5072b6986f8ffd
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 11:33:39 2024 -0600
Fix "clean renderer_vulkan.cpp"
This reverts commit 8a882658da9fabca40d71d73bfaf3bb5702acd72.
commit f4a10c4e4f27471b0a263ac363a6fa2abc9d6dc9
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 11:25:12 2024 -0600
remove Core() references
commit 5593b8484e7c9f525ea218902dd2c13148d86b37
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 11:09:26 2024 -0600
clean core/core.cpp
commit 55bbd8ad283297ef79db11e19ca6303fdfba6626
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 11:03:45 2024 -0600
apply clang-format
commit 3707a0b2705dd415876130c9c90b0916bdea11db
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 11:02:16 2024 -0600
citra_qt/main.h
commit ddbdea9be4d8179a333e04e7c302e215868715a9
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 11:01:30 2024 -0600
clean common/detached_tasks.h
commit b513ba3b91ebc81bddd634b5690b6434824e1c7a
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:58:51 2024 -0600
clean android/app/src/main/jni/default_ini.h
commit b6ba7d7cd730393883fdca294c651a4186727b55
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:58:14 2024 -0600
clean android/app/src/main/jni/native.cpp
commit 2351305bb24b005920af0f3f7bb6bbb5bb3124bd
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:56:59 2024 -0600
network/network_settings.h
commit 5b4c1ebb97c7fad5daf7789e1d3640041c2412fb
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:55:53 2024 -0600
clean citra_qt/configuration/configure_web.ui
commit 9526d5122995c2e9c52b4d93b6e836a2ea4c80ef
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:54:53 2024 -0600
citra_qt/configuration/config.cpp
commit ec6fe57412ce97e06096fc07f8b86dd080b7b944
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:53:50 2024 -0600
clean citra/default_ini.h
commit acba1cf7e94de2fa87174e9f6d7c7c4554146352
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:52:47 2024 -0600
clean citra/config.cpp
commit 02888777590d4e4bf1423e168a672ca0c5e140e5
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:50:42 2024 -0600
clean vk_instance.cpp
commit eae451d5825b3601382c3a6dd08a3bde5c7a9460
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:48:53 2024 -0600
clean vk_instanch.h
commit 8a882658da9fabca40d71d73bfaf3bb5702acd72
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:47:11 2024 -0600
clean renderer_vulkan.cpp
commit ea6df111bc447913d2999acd86de984acced7eeb
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:45:51 2024 -0600
clean renderer_opengl.cpp
commit 6b1bea0ef8cf8831c520d1c4e90b9d73d421c764
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:44:17 2024 -0600
clean pica_to_gl.h
commit c12e984045a430cb10500241ada68701f73c85ac
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:42:48 2024 -0600
clean gl_driver.h
commit ca3fe7801fff125a1ab8706bfc3998ca2928bded
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:40:14 2024 -0600
clean gl_driver.cpp
commit d57381c38b217a423a7039bc7b413d79f59c2ff1
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date: Fri Mar 29 10:38:44 2024 -0600
delete telemetry files
commit 1af826d1a045c5568a0d9ef4ca423514f298aee2
Author: Miguel <81558772+Miguel-hrvs@users.noreply.github.com>
Date: Wed Mar 27 16:17:58 2024 +0100
remove the telemetry except from the renderers as I'm not being capable to remove it from there
* rebase renderer_vulkan
* clean up renderer_vulkan
* bring back vulkan gpu logging
* clang-format vk_instance.h
* fix-formatting
---------
Co-authored-by: Reg Tiangha <rtiangha@users.noreply.github.com>
411 lines
12 KiB
C++
411 lines
12 KiB
C++
// Copyright 2014 Citra Emulator Project
|
|
// Licensed under GPLv2 or any later version
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <array>
|
|
#include <memory>
|
|
#include <vector>
|
|
#include <QMainWindow>
|
|
#include <QPushButton>
|
|
#include <QString>
|
|
#include <QTimer>
|
|
#include <QTranslator>
|
|
#include "citra_qt/compatibility_list.h"
|
|
#include "citra_qt/hotkeys.h"
|
|
#include "core/core.h"
|
|
#include "core/savestate.h"
|
|
|
|
#ifdef __unix__
|
|
#include <QDBusObjectPath>
|
|
#endif
|
|
|
|
class AboutDialog;
|
|
class Config;
|
|
class ClickableLabel;
|
|
class EmuThread;
|
|
class GameList;
|
|
enum class GameListOpenTarget;
|
|
class GameListPlaceholder;
|
|
class GImageInfo;
|
|
class GPUCommandListWidget;
|
|
class GPUCommandStreamWidget;
|
|
class GraphicsBreakPointsWidget;
|
|
class GraphicsTracingWidget;
|
|
class GraphicsVertexShaderWidget;
|
|
class GRenderWindow;
|
|
class IPCRecorderWidget;
|
|
class LLEServiceModulesWidget;
|
|
class LoadingScreen;
|
|
class MicroProfileDialog;
|
|
class MultiplayerState;
|
|
class ProfilerWidget;
|
|
class QFileOpenEvent;
|
|
template <typename>
|
|
class QFutureWatcher;
|
|
class QLabel;
|
|
class QProgressBar;
|
|
class QPushButton;
|
|
class QSlider;
|
|
class RegistersWidget;
|
|
#if ENABLE_QT_UPDATER
|
|
class Updater;
|
|
#endif
|
|
class WaitTreeWidget;
|
|
|
|
namespace Camera {
|
|
class QtMultimediaCameraHandlerFactory;
|
|
}
|
|
|
|
namespace DiscordRPC {
|
|
class DiscordInterface;
|
|
}
|
|
|
|
namespace Core {
|
|
class Movie;
|
|
}
|
|
|
|
namespace Ui {
|
|
class MainWindow;
|
|
}
|
|
|
|
namespace Service::AM {
|
|
enum class InstallStatus : u32;
|
|
}
|
|
|
|
namespace Service::FS {
|
|
enum class MediaType : u32;
|
|
}
|
|
|
|
class GMainWindow : public QMainWindow {
|
|
Q_OBJECT
|
|
|
|
/// Max number of recently loaded items to keep track of
|
|
static const int max_recent_files_item = 10;
|
|
|
|
public:
|
|
void filterBarSetChecked(bool state);
|
|
void UpdateUITheme();
|
|
|
|
explicit GMainWindow(Core::System& system);
|
|
~GMainWindow();
|
|
|
|
GameList* game_list;
|
|
std::unique_ptr<DiscordRPC::DiscordInterface> discord_rpc;
|
|
|
|
bool DropAction(QDropEvent* event);
|
|
void AcceptDropEvent(QDropEvent* event);
|
|
|
|
void OnFileOpen(const QFileOpenEvent* event);
|
|
|
|
void UninstallTitles(
|
|
const std::vector<std::tuple<Service::FS::MediaType, u64, QString>>& titles);
|
|
|
|
public slots:
|
|
void OnAppFocusStateChanged(Qt::ApplicationState state);
|
|
void OnLoadComplete();
|
|
|
|
signals:
|
|
|
|
/**
|
|
* Signal that is emitted when a new EmuThread has been created and an emulation session is
|
|
* about to start. At this time, the core system emulation has been initialized, and all
|
|
* emulation handles and memory should be valid.
|
|
*
|
|
* @param emu_thread Pointer to the newly created EmuThread (to be used by widgets that need
|
|
* to access/change emulation state).
|
|
*/
|
|
void EmulationStarting(EmuThread* emu_thread);
|
|
|
|
/**
|
|
* Signal that is emitted when emulation is about to stop. At this time, the EmuThread and core
|
|
* system emulation handles and memory are still valid, but are about become invalid.
|
|
*/
|
|
void EmulationStopping();
|
|
|
|
void UpdateProgress(std::size_t written, std::size_t total);
|
|
void CIAInstallReport(Service::AM::InstallStatus status, QString filepath);
|
|
void CIAInstallFinished();
|
|
// Signal that tells widgets to update icons to use the current theme
|
|
void UpdateThemedIcons();
|
|
|
|
private:
|
|
void InitializeWidgets();
|
|
void InitializeDebugWidgets();
|
|
void InitializeRecentFileMenuActions();
|
|
void InitializeSaveStateMenuActions();
|
|
|
|
void SetDefaultUIGeometry();
|
|
void SyncMenuUISettings();
|
|
void RestoreUIState();
|
|
|
|
void ConnectAppEvents();
|
|
void ConnectWidgetEvents();
|
|
void ConnectMenuEvents();
|
|
void UpdateMenuState();
|
|
|
|
void PreventOSSleep();
|
|
void AllowOSSleep();
|
|
|
|
bool LoadROM(const QString& filename);
|
|
void BootGame(const QString& filename);
|
|
void ShutdownGame();
|
|
|
|
void SetDiscordEnabled(bool state);
|
|
void LoadAmiibo(const QString& filename);
|
|
|
|
#if ENABLE_QT_UPDATER
|
|
void ShowUpdaterWidgets();
|
|
void ShowUpdatePrompt();
|
|
void ShowNoUpdatePrompt();
|
|
void CheckForUpdates();
|
|
#endif
|
|
|
|
/**
|
|
* Stores the filename in the recently loaded files list.
|
|
* The new filename is stored at the beginning of the recently loaded files list.
|
|
* After inserting the new entry, duplicates are removed meaning that if
|
|
* this was inserted from \a OnMenuRecentFile(), the entry will be put on top
|
|
* and remove from its previous position.
|
|
*
|
|
* Finally, this function calls \a UpdateRecentFiles() to update the UI.
|
|
*
|
|
* @param filename the filename to store
|
|
*/
|
|
void StoreRecentFile(const QString& filename);
|
|
|
|
/**
|
|
* Updates the recent files menu.
|
|
* Menu entries are rebuilt from the configuration file.
|
|
* If there is no entry in the menu, the menu is greyed out.
|
|
*/
|
|
void UpdateRecentFiles();
|
|
|
|
void UpdateSaveStates();
|
|
|
|
/**
|
|
* If the emulation is running,
|
|
* asks the user if he really want to close the emulator
|
|
*
|
|
* @return true if the user confirmed
|
|
*/
|
|
bool ConfirmClose();
|
|
bool ConfirmChangeGame();
|
|
void closeEvent(QCloseEvent* event) override;
|
|
|
|
private slots:
|
|
void OnStartGame();
|
|
void OnRestartGame();
|
|
void OnPauseGame();
|
|
void OnPauseContinueGame();
|
|
void OnStopGame();
|
|
void OnSaveState();
|
|
void OnLoadState();
|
|
void OnMenuReportCompatibility();
|
|
/// Called whenever a user selects a game in the game list widget.
|
|
void OnGameListLoadFile(QString game_path);
|
|
void OnGameListOpenFolder(u64 program_id, GameListOpenTarget target);
|
|
void OnGameListNavigateToGamedbEntry(u64 program_id,
|
|
const CompatibilityList& compatibility_list);
|
|
void OnGameListDumpRomFS(QString game_path, u64 program_id);
|
|
void OnGameListOpenDirectory(const QString& directory);
|
|
void OnGameListAddDirectory();
|
|
void OnGameListShowList(bool show);
|
|
void OnGameListOpenPerGameProperties(const QString& file);
|
|
void OnConfigurePerGame();
|
|
void OnMenuLoadFile();
|
|
void OnMenuInstallCIA();
|
|
void OnMenuBootHomeMenu(u32 region);
|
|
void OnUpdateProgress(std::size_t written, std::size_t total);
|
|
void OnCIAInstallReport(Service::AM::InstallStatus status, QString filepath);
|
|
void OnCIAInstallFinished();
|
|
void OnMenuRecentFile();
|
|
void OnConfigure();
|
|
void OnLoadAmiibo();
|
|
void OnRemoveAmiibo();
|
|
void OnOpenCitraFolder();
|
|
void OnToggleFilterBar();
|
|
void OnDisplayTitleBars(bool);
|
|
void InitializeHotkeys();
|
|
void ToggleFullscreen();
|
|
void ToggleSecondaryFullscreen();
|
|
void ChangeScreenLayout();
|
|
void UpdateSecondaryWindowVisibility();
|
|
void ToggleScreenLayout();
|
|
void OnSwapScreens();
|
|
void OnRotateScreens();
|
|
void TriggerSwapScreens();
|
|
void TriggerRotateScreens();
|
|
void ShowFullscreen();
|
|
void HideFullscreen();
|
|
void ToggleWindowMode();
|
|
void OnCreateGraphicsSurfaceViewer();
|
|
void OnRecordMovie();
|
|
void OnPlayMovie();
|
|
void OnCloseMovie();
|
|
void OnSaveMovie();
|
|
void OnCaptureScreenshot();
|
|
void OnDumpVideo();
|
|
#ifdef _WIN32
|
|
void OnOpenFFmpeg();
|
|
#endif
|
|
void OnStartVideoDumping();
|
|
void StartVideoDumping(const QString& path);
|
|
void OnStopVideoDumping();
|
|
void OnCoreError(Core::System::ResultStatus, std::string);
|
|
/// Called whenever a user selects Help->About Citra
|
|
void OnMenuAboutCitra();
|
|
|
|
#if ENABLE_QT_UPDATER
|
|
void OnUpdateFound(bool found, bool error);
|
|
void OnCheckForUpdates();
|
|
void OnOpenUpdater();
|
|
#endif
|
|
|
|
void OnLanguageChanged(const QString& locale);
|
|
void OnMouseActivity();
|
|
|
|
void OnDecreaseVolume();
|
|
void OnIncreaseVolume();
|
|
void OnMute();
|
|
|
|
private:
|
|
Q_INVOKABLE void OnMoviePlaybackCompleted();
|
|
void UpdateStatusBar();
|
|
void UpdateBootHomeMenuState();
|
|
void LoadTranslation();
|
|
void UpdateWindowTitle();
|
|
void UpdateUISettings();
|
|
void RetranslateStatusBar();
|
|
void InstallCIA(QStringList filepaths);
|
|
void HideMouseCursor();
|
|
void ShowMouseCursor();
|
|
void OpenPerGameConfiguration(u64 title_id, const QString& file_name);
|
|
void UpdateVolumeUI();
|
|
void UpdateAPIIndicator(bool update = false);
|
|
void UpdateStatusButtons();
|
|
#ifdef __unix__
|
|
void SetGamemodeEnabled(bool state);
|
|
#endif
|
|
|
|
std::unique_ptr<Ui::MainWindow> ui;
|
|
Core::System& system;
|
|
Core::Movie& movie;
|
|
|
|
GRenderWindow* render_window;
|
|
GRenderWindow* secondary_window;
|
|
|
|
GameListPlaceholder* game_list_placeholder;
|
|
LoadingScreen* loading_screen;
|
|
|
|
// Status bar elements
|
|
QProgressBar* progress_bar = nullptr;
|
|
QLabel* message_label = nullptr;
|
|
QLabel* emu_speed_label = nullptr;
|
|
QLabel* game_fps_label = nullptr;
|
|
QLabel* emu_frametime_label = nullptr;
|
|
QPushButton* graphics_api_button = nullptr;
|
|
QPushButton* volume_button = nullptr;
|
|
QWidget* volume_popup = nullptr;
|
|
QSlider* volume_slider = nullptr;
|
|
QTimer status_bar_update_timer;
|
|
bool message_label_used_for_movie = false;
|
|
|
|
MultiplayerState* multiplayer_state = nullptr;
|
|
std::unique_ptr<Config> config;
|
|
|
|
// Whether emulation is currently running in Citra.
|
|
bool emulation_running = false;
|
|
std::unique_ptr<EmuThread> emu_thread;
|
|
// The title of the game currently running
|
|
QString game_title;
|
|
// The path to the game currently running
|
|
QString game_path;
|
|
|
|
bool auto_paused = false;
|
|
bool auto_muted = false;
|
|
QTimer mouse_hide_timer;
|
|
|
|
// Movie
|
|
bool movie_record_on_start = false;
|
|
QString movie_record_path;
|
|
QString movie_record_author;
|
|
|
|
bool movie_playback_on_start = false;
|
|
QString movie_playback_path;
|
|
|
|
// Video dumping
|
|
bool video_dumping_on_start = false;
|
|
QString video_dumping_path;
|
|
// Whether game shutdown is delayed due to video dumping
|
|
bool game_shutdown_delayed = false;
|
|
// Whether game was paused due to stopping video dumping
|
|
bool game_paused_for_dumping = false;
|
|
|
|
QString gl_renderer;
|
|
std::vector<QString> physical_devices;
|
|
|
|
// Debugger panes
|
|
ProfilerWidget* profilerWidget;
|
|
MicroProfileDialog* microProfileDialog;
|
|
RegistersWidget* registersWidget;
|
|
GPUCommandStreamWidget* graphicsWidget;
|
|
GPUCommandListWidget* graphicsCommandsWidget;
|
|
GraphicsBreakPointsWidget* graphicsBreakpointsWidget;
|
|
GraphicsVertexShaderWidget* graphicsVertexShaderWidget;
|
|
GraphicsTracingWidget* graphicsTracingWidget;
|
|
IPCRecorderWidget* ipcRecorderWidget;
|
|
LLEServiceModulesWidget* lleServiceModulesWidget;
|
|
WaitTreeWidget* waitTreeWidget;
|
|
#if ENABLE_QT_UPDATER
|
|
Updater* updater;
|
|
#endif
|
|
|
|
bool explicit_update_check = false;
|
|
bool defer_update_prompt = false;
|
|
|
|
QAction* actions_recent_files[max_recent_files_item];
|
|
std::array<QAction*, Core::SaveStateSlotCount> actions_load_state;
|
|
std::array<QAction*, Core::SaveStateSlotCount> actions_save_state;
|
|
|
|
u32 oldest_slot;
|
|
u64 oldest_slot_time;
|
|
u32 newest_slot;
|
|
u64 newest_slot_time;
|
|
|
|
QTranslator translator;
|
|
|
|
// stores default icon theme search paths for the platform
|
|
QStringList default_theme_paths;
|
|
|
|
HotkeyRegistry hotkey_registry;
|
|
|
|
std::shared_ptr<Camera::QtMultimediaCameraHandlerFactory> qt_cameras;
|
|
|
|
#ifdef __unix__
|
|
QDBusObjectPath wake_lock{};
|
|
#endif
|
|
|
|
protected:
|
|
void dropEvent(QDropEvent* event) override;
|
|
void dragEnterEvent(QDragEnterEvent* event) override;
|
|
void dragMoveEvent(QDragMoveEvent* event) override;
|
|
void mouseMoveEvent(QMouseEvent* event) override;
|
|
void mousePressEvent(QMouseEvent* event) override;
|
|
void mouseReleaseEvent(QMouseEvent* event) override;
|
|
};
|
|
|
|
class GApplicationEventFilter : public QObject {
|
|
Q_OBJECT
|
|
|
|
signals:
|
|
void FileOpen(const QFileOpenEvent* event);
|
|
|
|
protected:
|
|
bool eventFilter(QObject* object, QEvent* event) override;
|
|
};
|
|
|
|
Q_DECLARE_METATYPE(std::size_t);
|
|
Q_DECLARE_METATYPE(Service::AM::InstallStatus);
|