|
|
@@ -21,8 +21,10 @@ OBSProjector::OBSProjector(QWidget *widget, obs_source_t *source_, int monitor,
|
|
|
{
|
|
|
OBSSource source = GetSource();
|
|
|
if (source) {
|
|
|
- destroyedSignal.Connect(obs_source_get_signal_handler(source),
|
|
|
- "destroy", OBSSourceDestroyed, this);
|
|
|
+ sigs.emplace_back(obs_source_get_signal_handler(source),
|
|
|
+ "rename", OBSSourceRenamed, this);
|
|
|
+ sigs.emplace_back(obs_source_get_signal_handler(source),
|
|
|
+ "destroy", OBSSourceDestroyed, this);
|
|
|
}
|
|
|
|
|
|
isAlwaysOnTop = config_get_bool(GetGlobalConfig(), "BasicWindow",
|
|
|
@@ -106,6 +108,8 @@ OBSProjector::OBSProjector(QWidget *widget, obs_source_t *source_, int monitor,
|
|
|
|
|
|
OBSProjector::~OBSProjector()
|
|
|
{
|
|
|
+ sigs.clear();
|
|
|
+
|
|
|
bool isMultiview = type == ProjectorType::Multiview;
|
|
|
obs_display_remove_draw_callback(
|
|
|
GetDisplay(), isMultiview ? OBSRenderMultiview : OBSRender,
|
|
|
@@ -215,6 +219,17 @@ void OBSProjector::OBSRender(void *data, uint32_t cx, uint32_t cy)
|
|
|
endRegion();
|
|
|
}
|
|
|
|
|
|
+void OBSProjector::OBSSourceRenamed(void *data, calldata_t *params)
|
|
|
+{
|
|
|
+ OBSProjector *window = reinterpret_cast<OBSProjector *>(data);
|
|
|
+ QString oldName = calldata_string(params, "prev_name");
|
|
|
+ QString newName = calldata_string(params, "new_name");
|
|
|
+
|
|
|
+ QMetaObject::invokeMethod(window, "RenameProjector",
|
|
|
+ Q_ARG(QString, oldName),
|
|
|
+ Q_ARG(QString, newName));
|
|
|
+}
|
|
|
+
|
|
|
void OBSProjector::OBSSourceDestroyed(void *data, calldata_t *)
|
|
|
{
|
|
|
OBSProjector *window = reinterpret_cast<OBSProjector *>(data);
|