mangoapp: Fix usage of notify_one in condition variable

This should be outside of the lock_guard scope to avoid a deadlock.
pull/679/head
Joshua Ashton 2 years ago
parent 8e2c7e8524
commit da8b0cbad4

@ -52,20 +52,22 @@ void ctrl_thread(){
logger->is_active() ? logger->stop_logging() : logger->start_logging();
break;
}
std::lock_guard<std::mutex> lk(mangoapp_m);
switch (mangoapp_ctrl_v1->no_display){
case 1:
params->no_display = 1;
printf("set no_display 1\n");
break;
case 2:
params->no_display = 0;
printf("set no_display 0\n");
break;
case 3:
params->no_display ? params->no_display = 0 : params->no_display = 1;
printf("toggle no_display\n");
break;
{
std::lock_guard<std::mutex> lk(mangoapp_m);
switch (mangoapp_ctrl_v1->no_display){
case 1:
params->no_display = 1;
printf("set no_display 1\n");
break;
case 2:
params->no_display = 0;
printf("set no_display 0\n");
break;
case 3:
params->no_display ? params->no_display = 0 : params->no_display = 1;
printf("toggle no_display\n");
break;
}
}
mangoapp_cv.notify_one();
}

@ -14,8 +14,10 @@ static void parse_command(struct instance_data *instance_data,
{
if (!strncmp(cmd, "hud", cmdlen)) {
#ifdef MANGOAPP
std::lock_guard<std::mutex> lk(mangoapp_m);
instance_data->params.no_display = !instance_data->params.no_display;
{
std::lock_guard<std::mutex> lk(mangoapp_m);
instance_data->params.no_display = !instance_data->params.no_display;
}
mangoapp_cv.notify_one();
#else
instance_data->params.no_display = !instance_data->params.no_display;

@ -814,7 +814,7 @@ parse_overlay_config(struct overlay_params *params,
{
std::lock_guard<std::mutex> lk(mangoapp_m);
params->no_display = params->no_display;
mangoapp_cv.notify_one();
}
mangoapp_cv.notify_one();
#endif
}

Loading…
Cancel
Save