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