diff --git a/libobs/obs.c b/libobs/obs.c
index 1c6afdad9..9946e7891 100644
--- a/libobs/obs.c
+++ b/libobs/obs.c
@@ -425,7 +425,7 @@ bool obs_enum_output_types(size_t idx, const char **id)
graphics_t obs_graphics(void)
{
- return obs->video.graphics;
+ return (obs != NULL) ? obs->video.graphics : NULL;
}
media_t obs_media(void)
diff --git a/obs/forms/OBSWindows.cpp b/obs/forms/OBSWindows.cpp
index d3f858c2c..04c45e113 100644
--- a/obs/forms/OBSWindows.cpp
+++ b/obs/forms/OBSWindows.cpp
@@ -240,6 +240,7 @@ OBSBasicBase::OBSBasicBase( wxWindow* parent, wxWindowID id, const wxString& tit
this->Connect( fileOpenMenu->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileOpenClicked ) );
this->Connect( fileSaveMenu->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileSaveClicked ) );
this->Connect( fileExitMenu->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileExitClicked ) );
+ previewPanel->Connect( wxEVT_SIZE, wxSizeEventHandler( OBSBasicBase::OnResizePreview ), NULL, this );
scenes->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( OBSBasicBase::scenesClicked ), NULL, this );
scenes->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( OBSBasicBase::scenesRDown ), NULL, this );
this->Connect( ID_SCENE_ADD, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sceneAddClicked ) );
@@ -271,6 +272,7 @@ OBSBasicBase::~OBSBasicBase()
this->Disconnect( IF_FILE_OPEN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileOpenClicked ) );
this->Disconnect( IF_FILE_SAVE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileSaveClicked ) );
this->Disconnect( ID_FILE_EXIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileExitClicked ) );
+ previewPanel->Disconnect( wxEVT_SIZE, wxSizeEventHandler( OBSBasicBase::OnResizePreview ), NULL, this );
scenes->Disconnect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( OBSBasicBase::scenesClicked ), NULL, this );
scenes->Disconnect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( OBSBasicBase::scenesRDown ), NULL, this );
this->Disconnect( ID_SCENE_ADD, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sceneAddClicked ) );
diff --git a/obs/forms/OBSWindows.fbp b/obs/forms/OBSWindows.fbp
index 3ca9151f2..3637849e3 100644
--- a/obs/forms/OBSWindows.fbp
+++ b/obs/forms/OBSWindows.fbp
@@ -394,7 +394,7 @@
-
+ OnResizePreview
diff --git a/obs/forms/OBSWindows.h b/obs/forms/OBSWindows.h
index 1934c4027..96e417c0a 100644
--- a/obs/forms/OBSWindows.h
+++ b/obs/forms/OBSWindows.h
@@ -139,6 +139,7 @@ class OBSBasicBase : public WindowSubclass
virtual void fileOpenClicked( wxCommandEvent& event ) { event.Skip(); }
virtual void fileSaveClicked( wxCommandEvent& event ) { event.Skip(); }
virtual void fileExitClicked( wxCommandEvent& event ) { event.Skip(); }
+ virtual void OnResizePreview( wxSizeEvent& event ) { event.Skip(); }
virtual void scenesClicked( wxCommandEvent& event ) { event.Skip(); }
virtual void scenesRDown( wxMouseEvent& event ) { event.Skip(); }
virtual void sceneAddClicked( wxCommandEvent& event ) { event.Skip(); }
diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp
index 2a674fd15..5b38780dc 100644
--- a/obs/window-basic-main.cpp
+++ b/obs/window-basic-main.cpp
@@ -185,11 +185,20 @@ void OBSBasic::OnSize(wxSizeEvent &event)
return;
ResizePreview(ovi.base_width, ovi.base_height);
+}
+
+void OBSBasic::OnResizePreview(wxSizeEvent &event)
+{
+ event.Skip();
+
wxSize newSize = previewPanel->GetMinSize();
- gs_entercontext(obs_graphics());
- gs_resize(newSize.x, newSize.y);
- gs_leavecontext();
+ graphics_t graphics = obs_graphics();
+ if (graphics) {
+ gs_entercontext(graphics);
+ gs_resize(newSize.x, newSize.y);
+ gs_leavecontext();
+ }
}
void OBSBasic::fileNewClicked(wxCommandEvent &event)
diff --git a/obs/window-basic-main.hpp b/obs/window-basic-main.hpp
index d3b5e1cfe..24696bebc 100644
--- a/obs/window-basic-main.hpp
+++ b/obs/window-basic-main.hpp
@@ -43,6 +43,7 @@ protected:
virtual void OnClose(wxCloseEvent &event);
virtual void OnMinimize(wxIconizeEvent &event);
virtual void OnSize(wxSizeEvent &event);
+ virtual void OnResizePreview(wxSizeEvent &event);
virtual void fileNewClicked(wxCommandEvent &event);
virtual void fileOpenClicked(wxCommandEvent &event);
virtual void fileSaveClicked(wxCommandEvent &event);