Move Discord Rich Presence behind a compile-time option

This commit is contained in:
David Hrdlička
2023-02-01 17:17:56 +01:00
parent 4ebbeec488
commit 7490bb12c9
27 changed files with 90 additions and 6 deletions

View File

@@ -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
#

View File

@@ -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)

View File

@@ -52,7 +52,9 @@ extern "C" {
#include <86box/plat.h>
#include <86box/ui.h>
#include <86box/video.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, [] {

View File

@@ -39,7 +39,9 @@ extern "C" {
#include <86box/keyboard.h>
#include <86box/plat.h>
#include <86box/ui.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

View File

@@ -103,7 +103,9 @@ extern "C" {
#include <86box/rom.h>
#include <86box/config.h>
#include <86box/ui.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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -44,7 +44,9 @@
#include <86box/ui.h>
#include <86box/win.h>
#include <86box/version.h>
#ifdef DISCORD
# include <86box/discord.h>
#endif
#ifdef MTR_ENABLED
# include <minitrace/minitrace.h>
@@ -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);