diff --git a/CMakeLists.txt b/CMakeLists.txt index b067bedbe..dfbd87b7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -138,6 +138,7 @@ option(MINITRACE "Enable Chrome tracing using the modified minitrace library" option(GDBSTUB "Enable GDB stub server for debugging" OFF) option(DEV_BRANCH "Development branch" OFF) option(QT "Qt GUI" ON) +option(DISCORD "Discord Rich Presence support" ON) # Development branch features # diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 476c27439..77de8aad9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -19,7 +19,7 @@ if(APPLE) endif() add_executable(86Box 86box.c config.c log.c random.c timer.c io.c acpi.c apm.c - dma.c ddma.c discord.c nmi.c pic.c pit.c pit_fast.c port_6x.c port_92.c ppi.c pci.c + dma.c ddma.c nmi.c pic.c pit.c pit_fast.c port_6x.c port_92.c ppi.c pci.c mca.c usb.c fifo8.c device.c nvr.c nvr_at.c nvr_ps2.c machine_status.c ini.c) if(CMAKE_SYSTEM_NAME MATCHES "Linux") @@ -51,6 +51,11 @@ if(DEV_BRANCH) add_compile_definitions(DEV_BRANCH) endif() +if(DISCORD) + add_compile_definitions(DISCORD) + target_sources(86Box PRIVATE discord.c) +endif() + if(VNC) find_package(LibVNCServer) if(LibVNCServer_FOUND) diff --git a/src/qt/qt_main.cpp b/src/qt/qt_main.cpp index e2d4c6c90..5bd2d40d3 100644 --- a/src/qt/qt_main.cpp +++ b/src/qt/qt_main.cpp @@ -52,7 +52,9 @@ extern "C" { #include <86box/plat.h> #include <86box/ui.h> #include <86box/video.h> -#include <86box/discord.h> +#ifdef DISCORD +# include <86box/discord.h> +#endif #include <86box/gdbstub.h> } @@ -196,7 +198,9 @@ main(int argc, char *argv[]) return 0; } +#ifdef DISCORD discord_load(); +#endif main_window = new MainWindow(); if (startMaximized) { @@ -271,12 +275,14 @@ main(int argc, char *argv[]) /* Set the PAUSE mode depending on the renderer. */ // plat_pause(0); QTimer onesec; - QTimer discordupdate; QObject::connect(&onesec, &QTimer::timeout, &app, [] { pc_onesec(); }); onesec.setTimerType(Qt::PreciseTimer); onesec.start(1000); + +#ifdef DISCORD + QTimer discordupdate; if (discord_loaded) { QTimer::singleShot(1000, &app, [] { if (enable_discord) { @@ -290,6 +296,7 @@ main(int argc, char *argv[]) }); discordupdate.start(1000); } +#endif /* Initialize the rendering window, or fullscreen. */ QTimer::singleShot(0, &app, [] { diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index 86d8afff7..0af5626f3 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -39,7 +39,9 @@ extern "C" { #include <86box/keyboard.h> #include <86box/plat.h> #include <86box/ui.h> -#include <86box/discord.h> +#ifdef DISCORD +# include <86box/discord.h> +#endif #include <86box/device.h> #include <86box/video.h> #include <86box/machine.h> @@ -305,6 +307,10 @@ MainWindow::MainWindow(QWidget *parent) ui->actionEnable_Discord_integration->setChecked(enable_discord); ui->actionApply_fullscreen_stretch_mode_when_maximized->setChecked(video_fullscreen_scale_maximized); +#ifndef DISCORD + ui->actionEnable_Discord_integration->setVisible(false); +#endif + #if defined Q_OS_WINDOWS || defined Q_OS_MACOS /* Make the option visible only if ANGLE is loaded. */ ui->actionHardware_Renderer_OpenGL_ES->setVisible(QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGLES); @@ -2292,11 +2298,13 @@ void MainWindow::on_actionEnable_Discord_integration_triggered(bool checked) { enable_discord = checked; +#ifdef DISCORD if (enable_discord) { discord_init(); discord_update_activity(dopause); } else discord_close(); +#endif } void diff --git a/src/qt/qt_platform.cpp b/src/qt/qt_platform.cpp index f1d56d061..695531d5c 100644 --- a/src/qt/qt_platform.cpp +++ b/src/qt/qt_platform.cpp @@ -103,7 +103,9 @@ extern "C" { #include <86box/rom.h> #include <86box/config.h> #include <86box/ui.h> -#include <86box/discord.h> +#ifdef DISCORD +# include <86box/discord.h> +#endif #include "../cpu/cpu.h" #include <86box/plat.h> @@ -377,7 +379,11 @@ plat_pause(int p) } else { ui_window_title(oldtitle); } + +#ifdef DISCORD discord_update_activity(dopause); +#endif + QTimer::singleShot(0, main_window, &MainWindow::updateUiPauseState); #ifdef Q_OS_WINDOWS diff --git a/src/win/languages/cs-CZ.rc b/src/win/languages/cs-CZ.rc index 635d2dc89..1d48b7d12 100644 --- a/src/win/languages/cs-CZ.rc +++ b/src/win/languages/cs-CZ.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "Pořídit &screenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Předvolby...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Povolit integraci s &Discordem", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "&Zesílení zvuku", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/de-DE.rc b/src/win/languages/de-DE.rc index 308657978..98c89fc2a 100644 --- a/src/win/languages/de-DE.rc +++ b/src/win/languages/de-DE.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "S&creenshot aufnehmen\tStrg+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Einstellungen...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "&Discord-Integration aktivieren", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "&Klangverstärkung...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/en-GB.rc b/src/win/languages/en-GB.rc index 0cc4a8f5a..2ca59c8c8 100644 --- a/src/win/languages/en-GB.rc +++ b/src/win/languages/en-GB.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "Take s&creenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Preferences...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Enable &Discord integration", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "Sound &gain...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/en-US.rc b/src/win/languages/en-US.rc index 12100b0bf..005b2495f 100644 --- a/src/win/languages/en-US.rc +++ b/src/win/languages/en-US.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "Take s&creenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Preferences...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Enable &Discord integration", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "Sound &gain...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/es-ES.rc b/src/win/languages/es-ES.rc index cf9c03371..ff6dc1b76 100644 --- a/src/win/languages/es-ES.rc +++ b/src/win/languages/es-ES.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "Tomar c&aptura\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Preferencias...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Habilitar integración con &Discord", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "&Ganancia de sonido...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/fi-FI.rc b/src/win/languages/fi-FI.rc index 852778a96..9d65343f9 100644 --- a/src/win/languages/fi-FI.rc +++ b/src/win/languages/fi-FI.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "Ota &kuvakaappaus\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Sovellusasetukset...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Käytä &Discord-integraatiota", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "&Äänitasot...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/fr-FR.rc b/src/win/languages/fr-FR.rc index 8e005ebcd..42acaec05 100644 --- a/src/win/languages/fr-FR.rc +++ b/src/win/languages/fr-FR.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "Copie &Ecran\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Préférences...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Activer intégration &Discord", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "&Gain Son...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/hr-HR.rc b/src/win/languages/hr-HR.rc index b1b4a3524..a34dab06b 100644 --- a/src/win/languages/hr-HR.rc +++ b/src/win/languages/hr-HR.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "Napravi &snimku zaslona\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Postavke...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Omogući integraciju sa programom &Discord", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "&Pojačanje zvuka...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/hu-HU.rc b/src/win/languages/hu-HU.rc index 0692c1cdd..7512c9a8a 100644 --- a/src/win/languages/hu-HU.rc +++ b/src/win/languages/hu-HU.rc @@ -109,7 +109,9 @@ BEGIN MENUITEM "&Képernyőkép készítése\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Beállítások...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "&Discord integráció engedélyezése", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "&Hangerőszabályzó...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/it-IT.rc b/src/win/languages/it-IT.rc index bf82c116f..af08d5bed 100644 --- a/src/win/languages/it-IT.rc +++ b/src/win/languages/it-IT.rc @@ -105,7 +105,9 @@ BEGIN MENUITEM "Cattura schermata\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Preferenze...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Abilita &integrazione Discord", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "Guadagno &suono...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/ja-JP.rc b/src/win/languages/ja-JP.rc index e1fc2bae9..a5c39ba28 100644 --- a/src/win/languages/ja-JP.rc +++ b/src/win/languages/ja-JP.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "スクリーンショットを撮る(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "環境設定(&P)...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Discordとの連携機能(&D)", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "音量を調節(&G)...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/ko-KR.rc b/src/win/languages/ko-KR.rc index 9379205fe..404b97584 100644 --- a/src/win/languages/ko-KR.rc +++ b/src/win/languages/ko-KR.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "스크린샷 찍기(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "환경설정(&P)...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "디스코드 연동 활성화하기(&D)", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "음량 증폭(&G)...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/pl-PL.rc b/src/win/languages/pl-PL.rc index 054428e5b..a9f760a50 100644 --- a/src/win/languages/pl-PL.rc +++ b/src/win/languages/pl-PL.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "Zrób &zrzut ekranu\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Preferencje...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Włącz integrację z &Discord", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "Wzmocnienie &dźwięku...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/pt-BR.rc b/src/win/languages/pt-BR.rc index 7147854bc..8e4c36d38 100644 --- a/src/win/languages/pt-BR.rc +++ b/src/win/languages/pt-BR.rc @@ -107,7 +107,9 @@ BEGIN MENUITEM "Capturar &tela\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Preferências...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Ativar integração com o &Discord", IDM_DISCORD +#endif DISCORD MENUITEM SEPARATOR MENUITEM "&Ganho de som...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/pt-PT.rc b/src/win/languages/pt-PT.rc index 0deeebc41..aa61f812d 100644 --- a/src/win/languages/pt-PT.rc +++ b/src/win/languages/pt-PT.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "Gravar imagem de ecrã\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Preferências...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Ativar integração com &Discord", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "&Ganho de som...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/ru-RU.rc b/src/win/languages/ru-RU.rc index 7cb75fb48..794e502ab 100644 --- a/src/win/languages/ru-RU.rc +++ b/src/win/languages/ru-RU.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "Сделать с&криншот\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Параметры...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Включить интеграцию &Discord", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "&Усиление звука...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/sl-SI.rc b/src/win/languages/sl-SI.rc index 7a56d4cc5..a84bd5ec3 100644 --- a/src/win/languages/sl-SI.rc +++ b/src/win/languages/sl-SI.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "&Zajemi posnetek zaslona\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Možnosti...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Omogoči integracijo s programom &Discord", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "&Ojačanje zvoka...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/tr-TR.rc b/src/win/languages/tr-TR.rc index 896f6a300..d162a9aa7 100644 --- a/src/win/languages/tr-TR.rc +++ b/src/win/languages/tr-TR.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "&Ekran görüntüsü al\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Tercihler...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "&Discord entegrasyonunu etkinleştir", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "&Ses yükseltici...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/uk-UA.rc b/src/win/languages/uk-UA.rc index 332966686..df751e3f1 100644 --- a/src/win/languages/uk-UA.rc +++ b/src/win/languages/uk-UA.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "Зробити &знімок\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Параметри...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "Увімкнути інтеграцію &Discord", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "&Посилення звуку...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/zh-CN.rc b/src/win/languages/zh-CN.rc index 13f878cb6..397a783e2 100644 --- a/src/win/languages/zh-CN.rc +++ b/src/win/languages/zh-CN.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "截图(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "首选项(&P)...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "启用 Discord 集成(&D)", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "音量增益(&G)...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/languages/zh-TW.rc b/src/win/languages/zh-TW.rc index f922c950b..190103d93 100644 --- a/src/win/languages/zh-TW.rc +++ b/src/win/languages/zh-TW.rc @@ -104,7 +104,9 @@ BEGIN MENUITEM "擷圖(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "首選項(&P)...", IDM_PREFERENCES +#ifdef DISCORD MENUITEM "啟用 Discord 整合(&D)", IDM_DISCORD +#endif MENUITEM SEPARATOR MENUITEM "音量增益(&G)...", IDM_SND_GAIN #ifdef MTR_ENABLED diff --git a/src/win/win_ui.c b/src/win/win_ui.c index 6107c0609..63db0176b 100644 --- a/src/win/win_ui.c +++ b/src/win/win_ui.c @@ -44,7 +44,9 @@ #include <86box/ui.h> #include <86box/win.h> #include <86box/version.h> -#include <86box/discord.h> +#ifdef DISCORD +# include <86box/discord.h> +#endif #ifdef MTR_ENABLED # include @@ -316,10 +318,13 @@ ResetAllMenus(void) video_set_filter_menu(menuMain); +#ifdef DISCORD if (discord_loaded) CheckMenuItem(menuMain, IDM_DISCORD, enable_discord ? MF_CHECKED : MF_UNCHECKED); else EnableMenuItem(menuMain, IDM_DISCORD, MF_DISABLED); +#endif + #ifdef MTR_ENABLED EnableMenuItem(menuMain, IDM_ACTION_END_TRACE, MF_DISABLED); #endif @@ -820,6 +825,7 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) config_save(); break; +#ifdef DISCORD case IDM_DISCORD: if (!discord_loaded) break; @@ -831,6 +837,7 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) } else discord_close(); break; +#endif default: media_menu_proc(hwnd, message, wParam, lParam); @@ -1212,6 +1219,7 @@ ui_init(int nCmdShow) return (0); } +#ifdef DISCORD if (!discord_load()) { enable_discord = 0; } else if (enable_discord) { @@ -1221,6 +1229,7 @@ ui_init(int nCmdShow) /* Update Discord status */ discord_update_activity(dopause); } +#endif /* Create our main window's class and register it. */ wincl.hInstance = hinstance; @@ -1451,9 +1460,11 @@ ui_init(int nCmdShow) plat_setfullscreen(0); } +#ifdef DISCORD /* Run Discord API callbacks */ if (enable_discord) discord_run_callbacks(); +#endif } timeEndPeriod(1); @@ -1471,8 +1482,10 @@ ui_init(int nCmdShow) win_mouse_close(); +#ifdef DISCORD /* Shut down the Discord integration */ discord_close(); +#endif if (user32_handle != NULL) dynld_close(user32_handle); @@ -1521,9 +1534,11 @@ plat_pause(int p) CheckMenuItem(menuMain, IDM_ACTION_PAUSE, (dopause) ? MF_CHECKED : MF_UNCHECKED); +#ifdef DISCORD /* Update Discord status */ if (enable_discord) discord_update_activity(dopause); +#endif /* Update the toolbar */ ToolBarUpdatePause(p);