From 26b94f18cdafac620ada2e43a6f5472c194ff2ba Mon Sep 17 00:00:00 2001 From: Sour Date: Sun, 15 Jul 2018 19:27:38 -0400 Subject: [PATCH] Linux: Fixed compilation errors/warnings --- Core/EmulationSettings.h | 2 +- Core/HistoryViewer.cpp | 8 ++++++-- Core/HistoryViewer.h | 3 ++- Core/KeyManager.cpp | 6 ++++-- Core/MovieRecorder.cpp | 2 +- Core/OggMixer.cpp | 1 + GUI.NET/Forms/frmHistoryViewer.Designer.cs | 1 + GUI.NET/Forms/frmHistoryViewer.cs | 1 + InteropDLL/ConsoleWrapper.cpp | 7 ++++--- Libretro/Makefile.common | 1 + Linux/SdlRenderer.cpp | 16 ++++++++-------- Linux/SdlRenderer.h | 2 +- Linux/SdlSoundManager.cpp | 10 +++++----- 13 files changed, 36 insertions(+), 24 deletions(-) diff --git a/Core/EmulationSettings.h b/Core/EmulationSettings.h index 419953ce..db9c1bf3 100644 --- a/Core/EmulationSettings.h +++ b/Core/EmulationSettings.h @@ -588,7 +588,7 @@ private: uint32_t _defaultPpuPalette[64] = { /* 2C02 */ 0xFF666666, 0xFF002A88, 0xFF1412A7, 0xFF3B00A4, 0xFF5C007E, 0xFF6E0040, 0xFF6C0600, 0xFF561D00, 0xFF333500, 0xFF0B4800, 0xFF005200, 0xFF004F08, 0xFF00404D, 0xFF000000, 0xFF000000, 0xFF000000, 0xFFADADAD, 0xFF155FD9, 0xFF4240FF, 0xFF7527FE, 0xFFA01ACC, 0xFFB71E7B, 0xFFB53120, 0xFF994E00, 0xFF6B6D00, 0xFF388700, 0xFF0C9300, 0xFF008F32, 0xFF007C8D, 0xFF000000, 0xFF000000, 0xFF000000, 0xFFFFFEFF, 0xFF64B0FF, 0xFF9290FF, 0xFFC676FF, 0xFFF36AFF, 0xFFFE6ECC, 0xFFFE8170, 0xFFEA9E22, 0xFFBCBE00, 0xFF88D800, 0xFF5CE430, 0xFF45E082, 0xFF48CDDE, 0xFF4F4F4F, 0xFF000000, 0xFF000000, 0xFFFFFEFF, 0xFFC0DFFF, 0xFFD3D2FF, 0xFFE8C8FF, 0xFFFBC2FF, 0xFFFEC4EA, 0xFFFECCC5, 0xFFF7D8A5, 0xFFE4E594, 0xFFCFEF96, 0xFFBDF4AB, 0xFFB3F3CC, 0xFFB5EBF2, 0xFFB8B8B8, 0xFF000000, 0xFF000000 }; uint32_t _currentPalette[64] = { 0xFF666666, 0xFF002A88, 0xFF1412A7, 0xFF3B00A4, 0xFF5C007E, 0xFF6E0040, 0xFF6C0600, 0xFF561D00, 0xFF333500, 0xFF0B4800, 0xFF005200, 0xFF004F08, 0xFF00404D, 0xFF000000, 0xFF000000, 0xFF000000, 0xFFADADAD, 0xFF155FD9, 0xFF4240FF, 0xFF7527FE, 0xFFA01ACC, 0xFFB71E7B, 0xFFB53120, 0xFF994E00, 0xFF6B6D00, 0xFF388700, 0xFF0C9300, 0xFF008F32, 0xFF007C8D, 0xFF000000, 0xFF000000, 0xFF000000, 0xFFFFFEFF, 0xFF64B0FF, 0xFF9290FF, 0xFFC676FF, 0xFFF36AFF, 0xFFFE6ECC, 0xFFFE8170, 0xFFEA9E22, 0xFFBCBE00, 0xFF88D800, 0xFF5CE430, 0xFF45E082, 0xFF48CDDE, 0xFF4F4F4F, 0xFF000000, 0xFF000000, 0xFFFFFEFF, 0xFFC0DFFF, 0xFFD3D2FF, 0xFFE8C8FF, 0xFFFBC2FF, 0xFFFEC4EA, 0xFFFECCC5, 0xFFF7D8A5, 0xFFE4E594, 0xFFCFEF96, 0xFFBDF4AB, 0xFFB3F3CC, 0xFFB5EBF2, 0xFFB8B8B8, 0xFF000000, 0xFF000000 }; - static constexpr uint8_t _paletteLut[11][64] = { + const uint8_t _paletteLut[11][64] = { /* 2C02 */ { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 }, /* 2C03 */ { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,15,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,15,62,63 }, /* 2C04-0001 */ { 53,35,22,34,28,9,29,21,32,0,39,5,4,40,8,32,33,62,31,41,60,50,54,18,63,43,46,30,61,45,36,1,14,49,51,42,44,12,27,20,46,7,52,6,19,2,38,46,46,25,16,10,57,3,55,23,15,17,11,13,56,37,24,58 }, diff --git a/Core/HistoryViewer.cpp b/Core/HistoryViewer.cpp index b0f21d82..07fae039 100644 --- a/Core/HistoryViewer.cpp +++ b/Core/HistoryViewer.cpp @@ -15,6 +15,10 @@ HistoryViewer::HistoryViewer(shared_ptr console) _pollCounter = 0; } +HistoryViewer::~HistoryViewer() +{ +} + void HistoryViewer::SetHistoryData(std::deque &history) { _history = history; @@ -33,8 +37,8 @@ uint32_t HistoryViewer::GetHistoryLength() void HistoryViewer::GetHistorySegments(uint32_t *segmentBuffer, uint32_t &bufferSize) { - int segmentIndex = 0; - for(int i = 0; i < _history.size(); i++) { + size_t segmentIndex = 0; + for(size_t i = 0; i < _history.size(); i++) { if(_history[i].EndOfSegment) { segmentBuffer[segmentIndex] = i; segmentIndex++; diff --git a/Core/HistoryViewer.h b/Core/HistoryViewer.h index 6bf4ada1..2c91eb4c 100644 --- a/Core/HistoryViewer.h +++ b/Core/HistoryViewer.h @@ -18,6 +18,7 @@ private: public: HistoryViewer(shared_ptr console); + virtual ~HistoryViewer(); void SetHistoryData(std::deque &history); @@ -33,5 +34,5 @@ public: void ProcessEndOfFrame(); // Inherited via IInputProvider - virtual bool SetInput(BaseControlDevice * device) override; + bool SetInput(BaseControlDevice * device) override; }; \ No newline at end of file diff --git a/Core/KeyManager.cpp b/Core/KeyManager.cpp index 062ff507..c893139a 100644 --- a/Core/KeyManager.cpp +++ b/Core/KeyManager.cpp @@ -7,12 +7,14 @@ IKeyManager* KeyManager::_keyManager = nullptr; MousePosition KeyManager::_mousePosition = { 0, 0 }; -atomic KeyManager::_xMouseMovement = 0; -atomic KeyManager::_yMouseMovement = 0; +atomic KeyManager::_xMouseMovement; +atomic KeyManager::_yMouseMovement; EmulationSettings* KeyManager::_settings = nullptr; void KeyManager::RegisterKeyManager(IKeyManager* keyManager) { + _xMouseMovement = 0; + _yMouseMovement = 0; _keyManager = keyManager; } diff --git a/Core/MovieRecorder.cpp b/Core/MovieRecorder.cpp index a20e7c8d..55d24230 100644 --- a/Core/MovieRecorder.cpp +++ b/Core/MovieRecorder.cpp @@ -249,7 +249,7 @@ bool MovieRecorder::CreateMovie(string movieFile, std::deque &data, for(uint32_t i = startPosition; i < endPosition; i++) { RewindData rewindData = data[i]; - for(int i = 0; i < 30; i++) { + for(uint32_t i = 0; i < 30; i++) { for(shared_ptr &device : devices) { uint8_t port = device->GetPort(); if(i < rewindData.InputLogs[port].size()) { diff --git a/Core/OggMixer.cpp b/Core/OggMixer.cpp index 03319e67..0e4589fe 100644 --- a/Core/OggMixer.cpp +++ b/Core/OggMixer.cpp @@ -1,4 +1,5 @@ #include "stdafx.h" +#include #include "OggReader.h" #include "OggMixer.h" diff --git a/GUI.NET/Forms/frmHistoryViewer.Designer.cs b/GUI.NET/Forms/frmHistoryViewer.Designer.cs index 8e00d58b..aaf8ce06 100644 --- a/GUI.NET/Forms/frmHistoryViewer.Designer.cs +++ b/GUI.NET/Forms/frmHistoryViewer.Designer.cs @@ -143,6 +143,7 @@ // this.ctrlRenderer.Anchor = System.Windows.Forms.AnchorStyles.None; this.ctrlRenderer.Location = new System.Drawing.Point(134, 89); + this.ctrlRenderer.Margin = new System.Windows.Forms.Padding(0, 0, 0, 0); this.ctrlRenderer.Name = "ctrlRenderer"; this.ctrlRenderer.Size = new System.Drawing.Size(256, 240); this.ctrlRenderer.TabIndex = 0; diff --git a/GUI.NET/Forms/frmHistoryViewer.cs b/GUI.NET/Forms/frmHistoryViewer.cs index 21752b1c..912912ff 100644 --- a/GUI.NET/Forms/frmHistoryViewer.cs +++ b/GUI.NET/Forms/frmHistoryViewer.cs @@ -121,6 +121,7 @@ namespace Mesen.GUI.Forms { InteropEmu.ScreenSize size = InteropEmu.GetScreenSize(false, InteropEmu.ConsoleId.HistoryViewer); if(size.Width != ctrlRenderer.ClientSize.Width || size.Height != ctrlRenderer.ClientSize.Height) { + //MessageBox.Show(size.Height.ToString() + " vs " + ctrlRenderer.ClientSize.Height.ToString()); ctrlRenderer.ClientSize = new Size(size.Width, size.Height); } diff --git a/InteropDLL/ConsoleWrapper.cpp b/InteropDLL/ConsoleWrapper.cpp index 768ee137..13203c33 100644 --- a/InteropDLL/ConsoleWrapper.cpp +++ b/InteropDLL/ConsoleWrapper.cpp @@ -71,6 +71,7 @@ shared_ptr GetConsoleById(ConsoleId consoleId) { shared_ptr console; switch(consoleId) { + case ConsoleId::Master: console = _console; break; case ConsoleId::Slave: console = _console->GetDualConsole(); break; case ConsoleId::HistoryViewer: console = _historyConsole; break; } @@ -141,7 +142,7 @@ namespace InteropEmu { #ifdef _WIN32 _renderer.reset(new Renderer(_console, (HWND)_viewerHandle, true)); #else - _renderer.reset(new SdlRenderer(_console, _viewerHandle)); + _renderer.reset(new SdlRenderer(_console, _viewerHandle, true)); #endif } @@ -174,7 +175,7 @@ namespace InteropEmu { _dualRenderer.reset(new Renderer(slaveConsole, (HWND)viewerHandle, false)); _dualSoundManager.reset(new SoundManager(slaveConsole, (HWND)windowHandle)); #else - _dualRenderer.reset(new SdlRenderer(slaveConsole, viewerHandle)); + _dualRenderer.reset(new SdlRenderer(slaveConsole, viewerHandle, false)); _dualSoundManager.reset(new SdlSoundManager(slaveConsole)); #endif _console->Resume(); @@ -205,7 +206,7 @@ namespace InteropEmu { _historyRenderer.reset(new Renderer(_historyConsole, (HWND)viewerHandle, false)); _historySoundManager.reset(new SoundManager(_historyConsole, (HWND)windowHandle)); #else - _historyRenderer.reset(new SdlRenderer(_historyConsole, viewerHandle)); + _historyRenderer.reset(new SdlRenderer(_historyConsole, viewerHandle, false)); _historySoundManager.reset(new SdlSoundManager(_historyConsole)); #endif } diff --git a/Libretro/Makefile.common b/Libretro/Makefile.common index 7b45d085..b5411af8 100644 --- a/Libretro/Makefile.common +++ b/Libretro/Makefile.common @@ -65,6 +65,7 @@ SOURCES_CXX := $(LIBRETRO_DIR)/libretro.cpp \ $(CORE_DIR)/HdPackLoader.cpp \ $(CORE_DIR)/HdPpu.cpp \ $(CORE_DIR)/HdVideoFilter.cpp \ + $(CORE_DIR)/HistoryViewer.cpp \ $(CORE_DIR)/iNesLoader.cpp \ $(CORE_DIR)/KeyManager.cpp \ $(CORE_DIR)/LabelManager.cpp \ diff --git a/Linux/SdlRenderer.cpp b/Linux/SdlRenderer.cpp index 0cbbab94..4fe636f5 100755 --- a/Linux/SdlRenderer.cpp +++ b/Linux/SdlRenderer.cpp @@ -8,7 +8,7 @@ SimpleLock SdlRenderer::_reinitLock; SimpleLock SdlRenderer::_frameLock; -SdlRenderer::SdlRenderer(shared_ptr console, void* windowHandle) : BaseRenderer(console), _windowHandle(windowHandle) +SdlRenderer::SdlRenderer(shared_ptr console, void* windowHandle, bool registerAsMessageManager) : BaseRenderer(console, registerAsMessageManager), _windowHandle(windowHandle) { _frameBuffer = nullptr; SetScreenSize(256,240); @@ -115,10 +115,10 @@ void SdlRenderer::SetScreenSize(uint32_t width, uint32_t height) ScreenSize screenSize; _console->GetVideoDecoder()->GetScreenSize(screenSize, false); - if(_screenHeight != (uint32_t)screenSize.Height || _screenWidth != (uint32_t)screenSize.Width || _nesFrameHeight != height || _nesFrameWidth != width || _resizeFilter != EmulationSettings::GetVideoResizeFilter() || _vsyncEnabled != EmulationSettings::CheckFlag(EmulationFlags::VerticalSync)) { + if(_screenHeight != (uint32_t)screenSize.Height || _screenWidth != (uint32_t)screenSize.Width || _nesFrameHeight != height || _nesFrameWidth != width || _resizeFilter != _console->GetSettings()->GetVideoResizeFilter() || _vsyncEnabled != _console->GetSettings()->CheckFlag(EmulationFlags::VerticalSync)) { _reinitLock.Acquire(); - _vsyncEnabled = EmulationSettings::CheckFlag(EmulationFlags::VerticalSync); + _vsyncEnabled = _console->GetSettings()->CheckFlag(EmulationFlags::VerticalSync); _nesFrameHeight = height; _nesFrameWidth = width; @@ -127,7 +127,7 @@ void SdlRenderer::SetScreenSize(uint32_t width, uint32_t height) _screenHeight = screenSize.Height; _screenWidth = screenSize.Width; - _resizeFilter = EmulationSettings::GetVideoResizeFilter(); + _resizeFilter = _console->GetSettings()->GetVideoResizeFilter(); SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, _resizeFilter == VideoResizeFilter::Bilinear ? "1" : "0"); _screenBufferSize = _screenHeight*_screenWidth; @@ -152,8 +152,8 @@ void SdlRenderer::Render() return; } - bool paused = EmulationSettings::IsPaused() && _console->IsRunning(); - bool disableOverlay = EmulationSettings::CheckFlag(EmulationFlags::HidePauseOverlay); + bool paused = _console->IsPaused() && _console->IsRunning(); + bool disableOverlay = _console->GetSettings()->CheckFlag(EmulationFlags::HidePauseOverlay); shared_ptr debugger = _console->GetDebugger(false); if(debugger && debugger->IsExecutionStopped()) { paused = debugger->IsPauseIconShown(); @@ -188,7 +188,7 @@ void SdlRenderer::Render() SDL_Rect dest = {0, 0, (int)_screenWidth, (int)_screenHeight }; SDL_RenderCopy(_sdlRenderer, _sdlTexture, &source, &dest); - if(paused && !EmulationSettings::CheckFlag(EmulationFlags::HidePauseOverlay)) { + if(paused && !_console->GetSettings()->CheckFlag(EmulationFlags::HidePauseOverlay)) { DrawPauseScreen(disableOverlay); } else if(_console->GetVideoDecoder()->IsRunning()) { DrawCounters(); @@ -224,7 +224,7 @@ void SdlRenderer::DrawPauseScreen(bool disableOverlay) XMFLOAT2 size = _largeFont->MeasureString(L"PAUSE"); _largeFont->DrawString(_sdlRenderer, L"PAUSE", (int)(_screenWidth / 2 - size.x / 2), (int)(_screenHeight / 2 - size.y / 2 - 8), 250, 235, 215); - string utf8Message = EmulationSettings::GetPauseScreenMessage(); + string utf8Message = _console->GetSettings()->GetPauseScreenMessage(); if(utf8Message.size() > 0) { std::wstring message = utf8::utf8::decode(utf8Message); float width = MeasureString(message); diff --git a/Linux/SdlRenderer.h b/Linux/SdlRenderer.h index 4e65b855..55730ef5 100755 --- a/Linux/SdlRenderer.h +++ b/Linux/SdlRenderer.h @@ -61,7 +61,7 @@ private: bool ContainsCharacter(wchar_t character) override; public: - SdlRenderer(shared_ptr console, void* windowHandle); + SdlRenderer(shared_ptr console, void* windowHandle, bool registerAsMessageManager); virtual ~SdlRenderer(); void UpdateFrame(void *frameBuffer, uint32_t width, uint32_t height) override; diff --git a/Linux/SdlSoundManager.cpp b/Linux/SdlSoundManager.cpp index 47900049..020edc1e 100755 --- a/Linux/SdlSoundManager.cpp +++ b/Linux/SdlSoundManager.cpp @@ -50,10 +50,10 @@ bool SdlSoundManager::InitializeAudio(uint32_t sampleRate, bool isStereo) _sampleRate = sampleRate; _isStereo = isStereo; - _previousLatency = EmulationSettings::GetAudioLatency(); + _previousLatency = _console->GetSettings()->GetAudioLatency(); int bytesPerSample = 2 * (isStereo ? 2 : 1); - int32_t requestedByteLatency = (int32_t)((float)(sampleRate * EmulationSettings::GetAudioLatency()) / 1000.0f * bytesPerSample); + int32_t requestedByteLatency = (int32_t)((float)(sampleRate * _console->GetSettings()->GetAudioLatency()) / 1000.0f * bytesPerSample); _bufferSize = (int32_t)std::ceil((double)requestedByteLatency * 2 / 0x10000) * 0x10000; _buffer = new uint8_t[_bufferSize]; memset(_buffer, 0, _bufferSize); @@ -149,7 +149,7 @@ void SdlSoundManager::WriteToBuffer(uint8_t* input, uint32_t len) void SdlSoundManager::PlayBuffer(int16_t *soundBuffer, uint32_t sampleCount, uint32_t sampleRate, bool isStereo) { uint32_t bytesPerSample = (SoundMixer::BitsPerSample / 8) * (isStereo ? 2 : 1); - uint32_t latency = EmulationSettings::GetAudioLatency(); + uint32_t latency = _console->GetSettings()->GetAudioLatency(); if(_sampleRate != sampleRate || _isStereo != isStereo || _needReset || _previousLatency != latency) { Release(); InitializeAudio(sampleRate, isStereo); @@ -187,8 +187,8 @@ void SdlSoundManager::ProcessEndOfFrame() { ProcessLatency(_readPosition, _writePosition); - uint32_t emulationSpeed = EmulationSettings::GetEmulationSpeed(); - if(_averageLatency > 0 && emulationSpeed <= 100 && emulationSpeed > 0 && std::abs(_averageLatency - EmulationSettings::GetAudioLatency()) > 50) { + uint32_t emulationSpeed = _console->GetSettings()->GetEmulationSpeed(); + if(_averageLatency > 0 && emulationSpeed <= 100 && emulationSpeed > 0 && std::abs(_averageLatency - _console->GetSettings()->GetAudioLatency()) > 50) { //Latency is way off (over 50ms gap), stop audio & start again Stop(); }