implement scene adding callbacks, make a few API tweaks

This commit is contained in:
jp9000
2013-12-28 05:33:16 -07:00
parent fe8559a74b
commit cec94b042e
12 changed files with 83 additions and 24 deletions

View File

@@ -22,6 +22,37 @@
#include "window-settings-basic.hpp"
#include "window-main-basic.hpp"
void OBSBasic::SceneAdded(obs_source_t source)
{
const char *name = obs_source_getname(source);
obs_scene_t scene = obs_scene_fromsource(source);
scenes->Append(wxString(name, wxConvUTF8), scene);
}
void OBSBasic::SourceAdded(void *data, calldata_t params)
{
OBSBasic *window = (OBSBasic*)data;
obs_source_t source;
calldata_getptr(params, "source", (void**)&source);
obs_source_type type;
obs_source_gettype(source, &type, NULL);
if (type == SOURCE_SCENE)
window->SceneAdded(source);
}
void OBSBasic::SourceDestroyed(void *data, calldata_t params)
{
OBSBasic *window = (OBSBasic*)data;
obs_source_t source;
calldata_getptr(params, "source", (void**)&source);
/* TODO */
}
bool OBSBasic::Init()
{
if (!obs_startup())
@@ -29,6 +60,16 @@ bool OBSBasic::Init()
if (!InitGraphics())
return false;
signal_handler_connect(obs_signalhandler(), "source-add",
OBSBasic::SourceAdded, this);
signal_handler_connect(obs_signalhandler(), "source-destroy",
OBSBasic::SourceDestroyed, this);
//obs_scene_t scene = obs_scene_create("test scene");
//obs_add_source(obs_scene_getsource(scene));
//obs_load_module("test-input");
return true;
}
@@ -67,11 +108,6 @@ bool OBSBasic::InitGraphics()
return true;
}
bool OBSBasic::AddScene(const char *name)
{
return false;
}
void OBSBasic::OnClose(wxCloseEvent &event)
{
wxGetApp().ExitMainLoop();

View File

@@ -25,6 +25,11 @@
using namespace std;
class OBSBasic : public OBSBasicBase {
void SceneAdded(obs_source_t scene);
static void SourceAdded(void *data, calldata_t params);
static void SourceDestroyed(void *data, calldata_t params);
bool InitGraphics();
void NewProject();
@@ -60,8 +65,6 @@ public:
bool Init();
bool AddScene(const char *name);
inline wxPanel *GetPreviewPanel() {return previewPanel;}
inline wxSizer *GetPreviewContainer() {return previewContainer;}
};