X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=decklink_output.cpp;h=544e2edd333017d080b989a859004ba0f04bd6e4;hb=017c260b96736e797fee120107b85c4c7fc81aa1;hp=6295f7623c770b29325ab40a57e7cf72fc2968a1;hpb=d629176a2900f8611511136c7c9c40fe768115d5;p=nageru diff --git a/decklink_output.cpp b/decklink_output.cpp index 6295f76..544e2ed 100644 --- a/decklink_output.cpp +++ b/decklink_output.cpp @@ -3,6 +3,8 @@ #include // Must be above the Xlib includes. #include +#include + #include #include "chroma_subsampler.h" @@ -10,7 +12,6 @@ #include "decklink_util.h" #include "flags.h" #include "print_latency.h" -#include "resource_pool.h" #include "timebase.h" #include "v210_converter.h" @@ -21,7 +22,7 @@ using namespace std::chrono; namespace { // This class can be deleted during regular use, so make all the metrics static. -bool metrics_inited = false; +once_flag decklink_metrics_inited; LatencyHistogram latency_histogram; atomic metric_decklink_output_width_pixels{-1}; atomic metric_decklink_output_height_pixels{-1}; @@ -50,7 +51,7 @@ DeckLinkOutput::DeckLinkOutput(ResourcePool *resource_pool, QSurface *surface, u { chroma_subsampler.reset(new ChromaSubsampler(resource_pool)); - if (!metrics_inited) { + call_once(decklink_metrics_inited, [](){ latency_histogram.init("decklink_output"); global_metrics.add("decklink_output_width_pixels", &metric_decklink_output_width_pixels, Metrics::TYPE_GAUGE); global_metrics.add("decklink_output_height_pixels", &metric_decklink_output_height_pixels, Metrics::TYPE_GAUGE); @@ -71,9 +72,7 @@ DeckLinkOutput::DeckLinkOutput(ResourcePool *resource_pool, QSurface *surface, u global_metrics.add("decklink_output_completed_frames", {{ "status", "unknown" }}, &metric_decklink_output_completed_frames_unknown); global_metrics.add("decklink_output_scheduled_samples", &metric_decklink_output_scheduled_samples); - - metrics_inited = true; - } + }); } void DeckLinkOutput::set_device(IDeckLink *decklink)