diff --git a/Core/SaveState.cpp b/Core/SaveState.cpp index a01ea6aae612..a2248b3ff222 100644 --- a/Core/SaveState.cpp +++ b/Core/SaveState.cpp @@ -275,6 +275,9 @@ namespace SaveState if (g_Config.iRewindSnapshotInterval <= 0) { return; } + if (coreState != CORE_RUNNING) { + return; + } // For fast-forwarding, otherwise they may be useless and too close. double now = time_now_d(); diff --git a/GPU/GLES/GPU_GLES.cpp b/GPU/GLES/GPU_GLES.cpp index 4a53aa740a72..113828d3b3bc 100644 --- a/GPU/GLES/GPU_GLES.cpp +++ b/GPU/GLES/GPU_GLES.cpp @@ -248,7 +248,7 @@ void GPU_GLES::BeginHostFrame() { textureCache_->StartFrame(); // Save the cache from time to time. TODO: How often? We save on exit, so shouldn't need to do this all that often. - if (shaderCachePath_.Valid() && (gpuStats.numFlips & 4095) == 0) { + if (shaderCachePath_.Valid() && (gpuStats.numFlips & 32767) == 0 && coreState == CORE_RUNNING) { shaderManagerGL_->SaveCache(shaderCachePath_, &drawEngine_); } shaderManagerGL_->DirtyLastShader(); diff --git a/Windows/GEDebugger/CtrlDisplayListView.cpp b/Windows/GEDebugger/CtrlDisplayListView.cpp index e759effefa51..8af4ade2b6c0 100644 --- a/Windows/GEDebugger/CtrlDisplayListView.cpp +++ b/Windows/GEDebugger/CtrlDisplayListView.cpp @@ -279,6 +279,10 @@ void CtrlDisplayListView::PromptBreakpointCond() { void CtrlDisplayListView::onMouseDown(WPARAM wParam, LPARAM lParam, int button) { + if (!validDisplayList) { + return; + } + int y = HIWORD(lParam); int line = y/rowHeight; @@ -306,6 +310,10 @@ void CtrlDisplayListView::onMouseDown(WPARAM wParam, LPARAM lParam, int button) void CtrlDisplayListView::onMouseUp(WPARAM wParam, LPARAM lParam, int button) { + if (!validDisplayList) { + return; + } + if (button == 2) { HMENU menu = GetContextMenu(ContextMenuID::DISPLAYLISTVIEW); diff --git a/Windows/GEDebugger/GEDebugger.cpp b/Windows/GEDebugger/GEDebugger.cpp index 6aa226505179..869cd1be1459 100644 --- a/Windows/GEDebugger/GEDebugger.cpp +++ b/Windows/GEDebugger/GEDebugger.cpp @@ -291,13 +291,16 @@ void CGEDebugger::SetupPreviews() { EnableMenuItem(subMenu, ID_GEDBG_TRACK_PIXEL_STOP, primaryTrackX_ == 0xFFFFFFFF ? MF_GRAYED : MF_ENABLED); break; case ID_GEDBG_EXPORT_IMAGE: - PreviewExport(primaryBuffer_); + if (primaryBuffer_) + PreviewExport(primaryBuffer_); break; case ID_GEDBG_COPY_IMAGE: - PreviewToClipboard(primaryBuffer_, false); + if (primaryBuffer_) + PreviewToClipboard(primaryBuffer_, false); break; case ID_GEDBG_COPY_IMAGE_ALPHA: - PreviewToClipboard(primaryBuffer_, true); + if (primaryBuffer_) + PreviewToClipboard(primaryBuffer_, true); break; case ID_GEDBG_TRACK_PIXEL: primaryTrackX_ = x; @@ -336,13 +339,16 @@ void CGEDebugger::SetupPreviews() { EnableMenuItem(subMenu, ID_GEDBG_TRACK_PIXEL_STOP, secondTrackX_ == 0xFFFFFFFF ? MF_GRAYED : MF_ENABLED); break; case ID_GEDBG_EXPORT_IMAGE: - PreviewExport(secondBuffer_); + if (secondBuffer_) + PreviewExport(secondBuffer_); break; case ID_GEDBG_COPY_IMAGE: - PreviewToClipboard(secondBuffer_, false); + if (secondBuffer_) + PreviewToClipboard(secondBuffer_, false); break; case ID_GEDBG_COPY_IMAGE_ALPHA: - PreviewToClipboard(secondBuffer_, true); + if (secondBuffer_) + PreviewToClipboard(secondBuffer_, true); break; case ID_GEDBG_TRACK_PIXEL: secondTrackX_ = x;