From 58f95758236767c2f76af5531a802664ada915b0 Mon Sep 17 00:00:00 2001 From: "Christopher A. Mosher" Date: Sat, 13 Apr 2024 17:45:58 -0400 Subject: [PATCH] minor fixes --- bin/build.sh | 1 + src/gtkutil.cpp | 5 ++--- src/screenimage.cpp | 13 +++++++------ src/screenimage.h | 1 - 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bin/build.sh b/bin/build.sh index bcf5d92..5eb68d6 100755 --- a/bin/build.sh +++ b/bin/build.sh @@ -4,6 +4,7 @@ set -e if [ -e "$1/CMakeCache.txt" ] ; then builddir="$1" + shift else mkdir -p tmp builddir=$(mktemp -d tmp/tmp.XXXXXXXXXX) diff --git a/src/gtkutil.cpp b/src/gtkutil.cpp index 13b0c33..53de7ad 100644 --- a/src/gtkutil.cpp +++ b/src/gtkutil.cpp @@ -4,15 +4,14 @@ #include #include +#include +#include void *get_gtk_native_window_handle(void *widget) { GtkWidget *gtk_widget = GTK_WIDGET(widget); - gtk_widget_realize(gtk_widget); - GdkWindow *gdk_window = gtk_widget_get_window(gtk_widget); Window xid = gdk_x11_window_get_xid(gdk_window); - return reinterpret_cast(xid); } diff --git a/src/screenimage.cpp b/src/screenimage.cpp index ceefa8f..c080217 100644 --- a/src/screenimage.cpp +++ b/src/screenimage.cpp @@ -70,6 +70,7 @@ class ScreenException { ScreenImage::ScreenImage(Emulator &emulator, KeyEventHandler &k) : wxFrame(nullptr, wxID_ANY, "Emulator"), emu(emulator), + window(nullptr), fullscreen(false), buffer(true), display(AnalogTV::TV_OLD_COLOR), @@ -92,12 +93,6 @@ ScreenImage::~ScreenImage() { -void ScreenImage::OnIdle(wxIdleEvent &evt) { -// if (!this->FindFocus() || !this->wxPanelEmuScreen->HasFocus()) { -// this->wxPanelEmuScreen->SetFocus(); -// } -} - void ScreenImage::HandleUserCloseWindowRequest(wxCloseEvent& event) { wxGetApp().StopEmulator(); } @@ -167,6 +162,9 @@ void ScreenImage::createSdlTexture() { } void ScreenImage::destroyScreen() { + if (!this->window) { + return; + } SDL_DestroyTexture(this->texture); SDL_DestroyRenderer(this->renderer); SDL_DestroyWindow(this->window); @@ -336,6 +334,9 @@ void ScreenImage::drawPower(bool on) { } void ScreenImage::notifyObservers() { + if (!this->window) { + return; + } const int e = SDL_UpdateTexture(this->texture, NULL, this->pixels, SCRW*sizeof(unsigned int)); if (e) { std::cerr << SDL_GetError() << std::endl; diff --git a/src/screenimage.h b/src/screenimage.h index cf59be7..1ecd446 100644 --- a/src/screenimage.h +++ b/src/screenimage.h @@ -57,7 +57,6 @@ private: void createSdlTexture(); void destroyScreen(); - void OnIdle(wxIdleEvent &evt); void OnKeyDown(wxKeyEvent &evt); void OnKeyUp(wxKeyEvent &evt); void HandleUserCloseWindowRequest(wxCloseEvent& event);