From 61f20a83ad16ed187b879e78ee284a3d54b5b8f3 Mon Sep 17 00:00:00 2001 From: Michael Fabian 'Xaymar' Dirks Date: Thu, 14 Dec 2017 00:24:37 +0100 Subject: [PATCH] filter-blur: Use self-registration feature --- source/filter-blur.cpp | 16 ++++++++++++++-- source/filter-blur.h | 2 ++ source/plugin.cpp | 3 --- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/source/filter-blur.cpp b/source/filter-blur.cpp index 2140440c..74367224 100644 --- a/source/filter-blur.cpp +++ b/source/filter-blur.cpp @@ -19,6 +19,8 @@ #include "filter-blur.h" #include "strings.h" +#include +#include extern "C" { #pragma warning (push) @@ -29,14 +31,24 @@ extern "C" { #pragma warning (pop) } -#include -#include +// Initialize & Finalizer +static Filter::Blur* handler; +INITIALIZER(HandlerInit) { + initializerFunctions.push_back([] { + handler = new Filter::Blur(); + }); + finalizerFunctions.push_back([] { + delete handler; + }); +} + enum ColorFormat : uint64_t { RGB, YUV, // 701 }; + struct g_blurEffect { gs_effect_t* effect; std::vector kernels; diff --git a/source/filter-blur.h b/source/filter-blur.h index 719c3b3b..b9fa0224 100644 --- a/source/filter-blur.h +++ b/source/filter-blur.h @@ -20,6 +20,7 @@ #pragma once #include "plugin.h" #include "gs-helper.h" +#include "gs-effect.h" #define S_FILTER_BLUR "Filter.Blur" #define S_FILTER_BLUR_TYPE "Filter.Blur.Type" @@ -92,6 +93,7 @@ namespace Filter { gs_technique_t *m_technique; gs_texrender_t *m_primaryRT, *m_secondaryRT; gs_texrender_t *m_rtHorizontal, *m_rtVertical; + std::shared_ptr m_effectCache; // Blur Type m_type; diff --git a/source/plugin.cpp b/source/plugin.cpp index 96dfee31..aa64ee90 100644 --- a/source/plugin.cpp +++ b/source/plugin.cpp @@ -27,7 +27,6 @@ OBS_DECLARE_MODULE(); OBS_MODULE_AUTHOR("Michael Fabian Dirks"); OBS_MODULE_USE_DEFAULT_LOCALE("obs-stream-effects", "en-US"); -Filter::Blur *filterBlur; Filter::Displacement *filterDisplacement; Filter::Shape *filterShape; Filter::Transform *filterTransform; @@ -39,7 +38,6 @@ MODULE_EXPORT bool obs_module_load(void) { filterDisplacement = new Filter::Displacement(); filterShape = new Filter::Shape(); filterTransform = new Filter::Transform(); - filterBlur = new Filter::Blur(); for (auto func : initializerFunctions) { func(); } @@ -53,7 +51,6 @@ MODULE_EXPORT void obs_module_unload(void) { delete filterTransform; delete filterShape; delete filterDisplacement; - delete filterBlur; } MODULE_EXPORT const char* obs_module_name() {