Add global option for set virtual display as primary display
This commit is contained in:
@@ -328,6 +328,7 @@ namespace config {
|
||||
video_t video {
|
||||
false, // headless_mode
|
||||
false, // follow_client_hdr
|
||||
true, // set_vdisplay_primary
|
||||
28, // qp
|
||||
|
||||
0, // hevc_mode
|
||||
@@ -983,6 +984,7 @@ namespace config {
|
||||
|
||||
bool_f(vars, "headless_mode", video.headless_mode);
|
||||
bool_f(vars, "follow_client_hdr", video.follow_client_hdr);
|
||||
bool_f(vars, "set_vdisplay_primary", video.set_vdisplay_primary);
|
||||
int_f(vars, "qp", video.qp);
|
||||
int_f(vars, "min_threads", video.min_threads);
|
||||
int_between_f(vars, "hevc_mode", video.hevc_mode, { 0, 3 });
|
||||
|
||||
@@ -17,6 +17,7 @@ namespace config {
|
||||
struct video_t {
|
||||
bool headless_mode;
|
||||
bool follow_client_hdr;
|
||||
bool set_vdisplay_primary;
|
||||
// ffmpeg params
|
||||
int qp; // higher == more compression and less quality
|
||||
|
||||
|
||||
@@ -229,20 +229,29 @@ namespace proc {
|
||||
VDISPLAY::changeDisplaySettings(vdisplayName.c_str(), render_width, render_height, launch_session->fps);
|
||||
}
|
||||
|
||||
// Determine if we need to set the virtual display as primary
|
||||
bool shouldSetPrimary = false;
|
||||
bool shouldActuallySetPrimary = false;
|
||||
|
||||
if (launch_session->virtual_display || _app.virtual_display_primary) {
|
||||
shouldSetPrimary = (currentPrimaryDisplayName != vdisplayName);
|
||||
// Determine if we need to set the virtual display as primary
|
||||
// Client request overrides local config
|
||||
bool shouldSetVDisplayPrimary = launch_session->virtual_display;
|
||||
if (!shouldSetVDisplayPrimary) {
|
||||
// App config overrides global config
|
||||
if (_app.virtual_display) {
|
||||
shouldSetVDisplayPrimary = _app.virtual_display_primary;
|
||||
} else {
|
||||
shouldSetVDisplayPrimary = config::video.set_vdisplay_primary;
|
||||
}
|
||||
}
|
||||
|
||||
if (shouldSetVDisplayPrimary) {
|
||||
shouldActuallySetPrimary = (currentPrimaryDisplayName != vdisplayName);
|
||||
} else {
|
||||
shouldSetPrimary = (currentPrimaryDisplayName != prevPrimaryDisplayName);
|
||||
shouldActuallySetPrimary = (currentPrimaryDisplayName != prevPrimaryDisplayName);
|
||||
}
|
||||
|
||||
// Set primary display if needed
|
||||
if (shouldSetPrimary) {
|
||||
auto disp = (launch_session->virtual_display || _app.virtual_display_primary)
|
||||
? vdisplayName
|
||||
: prevPrimaryDisplayName;
|
||||
if (shouldActuallySetPrimary) {
|
||||
auto disp = shouldSetVDisplayPrimary ? vdisplayName : prevPrimaryDisplayName;
|
||||
BOOST_LOG(info) << "Setting display " << disp << " primary!!!";
|
||||
|
||||
VDISPLAY::setPrimaryDisplay(disp.c_str());
|
||||
|
||||
Reference in New Issue
Block a user