66
77#define CONFIG_SECTION " HyperionOutput"
88
9+ static void logger_message (void *data, calldata_t * cd)
10+ {
11+ auto *page = static_cast <HyperionProperties*>(data);
12+ const char * msg = calldata_string (cd, " msg" );
13+ page->appendLogText (msg);
14+ }
15+
916HyperionProperties::HyperionProperties (QWidget *parent)
1017 : QDialog(parent)
1118 , ui(new Ui::HyperionProperties)
@@ -42,9 +49,14 @@ HyperionProperties::HyperionProperties(QWidget *parent)
4249 int sizeDecimation = static_cast <int >(config_get_int (config, CONFIG_SECTION, OBS_SETTINGS_SIZEDECIMATION));
4350 ui->SizeDecimation ->setValue (sizeDecimation);
4451 }
45-
52+
4653 enableStart (true );
4754
55+ signal_handler_t *handler = hyperion_get_signal_handler ();
56+ signal_handler_connect (handler, " start" , OnStartSignal , this );
57+ signal_handler_connect (handler, " stop" , OnStopSignal , this );
58+ signal_handler_connect (handler, " log" , logger_message, this );
59+
4860 connect (ui->ButtonStart , &QPushButton::clicked, this , &HyperionProperties::saveSettings);
4961 connect (ui->AutoStart , &QCheckBox::stateChanged, this , &HyperionProperties::saveSettings);
5062
@@ -59,25 +71,36 @@ HyperionProperties::HyperionProperties(QWidget *parent)
5971
6072HyperionProperties::~HyperionProperties ()
6173{
74+ signal_handler_t *handler = hyperion_get_signal_handler ();
75+ signal_handler_disconnect (handler, " start" , OnStartSignal , this );
76+ signal_handler_disconnect (handler, " stop" , OnStopSignal , this );
77+ signal_handler_disconnect (handler, " log" , logger_message, this );
78+
6279 saveSettings ();
6380 hyperion_release ();
81+
6482 delete ui;
6583}
6684
6785void HyperionProperties::enableStart (bool enable)
6886{
6987 ui->ButtonStart ->setEnabled (enable);
7088 ui->ButtonStop ->setEnabled (!enable);
89+
90+ ui->Address ->setEnabled (enable);
91+ ui->Port ->setEnabled (enable);
92+ ui->Priority ->setEnabled (enable);
93+ ui->SizeDecimation ->setEnabled (enable);
7194}
7295
7396void HyperionProperties::appendLogText (const char *msg)
7497{
75- ui->WarningText ->appendPlainText (msg);
98+ ui->LogText ->appendPlainText (msg);
7699}
77100
78101void HyperionProperties::clearLog ()
79102{
80- ui->WarningText ->clear ();
103+ ui->LogText ->clear ();
81104}
82105
83106void HyperionProperties::saveSettings ()
@@ -106,42 +129,24 @@ void HyperionProperties::onStart()
106129 int priority = ui->Priority ->value ();
107130 int sizeDecimation = ui->SizeDecimation ->value ();
108131
109- signal_handler_t *handler = hyperion_get_signal_handler ();
110- signal_handler_connect (handler, " stop" , output_stopped , this );
111- signal_handler_connect (handler, " log" , logger_message, this );
112-
113- enableStart (false );
114- clearLog ();
115132 hyperion_start_streaming (address, port, priority, sizeDecimation);
116133}
117134
118135void HyperionProperties::onStop ()
119136{
137+ enableStart (true );
120138 hyperion_stop_streaming ();
121139}
122140
123- static void output_stopped (void *data, calldata_t *cd)
141+ void HyperionProperties::OnStartSignal (void *data, calldata_t *cd)
124142{
125- auto *page = static_cast <HyperionProperties*>(data);
126- auto *output = static_cast <obs_output_t *>(calldata_ptr (cd, " output" ));
127- bool running = calldata_bool (cd, " running" );
128- const char * msg = calldata_string (cd, " msg" );
129-
130- if (running)
131- {
132- page->appendLogText (msg);
133- }
134-
135- signal_handler_t *handler = obs_output_get_signal_handler (output);
136- page->enableStart (true );
137- signal_handler_disconnect (handler, " stop" , output_stopped, page);
138- signal_handler_disconnect (handler, " log" , logger_message, page);
143+ auto page = (HyperionProperties *)data;
144+ page->clearLog ();
145+ page->enableStart (false );
139146}
140147
141- static void logger_message (void *data, calldata_t *cd)
148+ void HyperionProperties::OnStopSignal (void *data, calldata_t *cd)
142149{
143- UNUSED_PARAMETER (cd);
144- auto *page = static_cast <HyperionProperties*>(data);
145- const char * msg = calldata_string (cd, " msg" );
146- page->appendLogText (msg);
150+ auto page = (HyperionProperties *)data;
151+ page->enableStart (true );
147152}
0 commit comments