@@ -308,14 +308,20 @@ void LayerHistory::partitionLayers(nsecs_t now, bool isVrrDevice) {
308308 const auto setFrameRateVoteType =
309309 info->isVisible () ? voteType : LayerVoteType::NoVote;
310310
311+ const bool hasSetFrameRateOpinion = frameRate.isValid () && !frameRate.isNoVote ();
312+ const bool hasCategoryOpinion =
313+ frameRate.category != FrameRateCategory::NoPreference &&
314+ frameRate.category != FrameRateCategory::Default;
315+ const bool hasFrameRateOpinion = hasSetFrameRateOpinion || hasCategoryOpinion;
316+
311317 if (gameModeFrameRateOverride.isValid ()) {
312318 info->setLayerVote ({gameFrameRateOverrideVoteType, gameModeFrameRateOverride});
313319 SFTRACE_FORMAT_INSTANT (" GameModeFrameRateOverride" );
314320 if (CC_UNLIKELY (mTraceEnabled )) {
315321 trace (*info, gameFrameRateOverrideVoteType,
316322 gameModeFrameRateOverride.getIntValue ());
317323 }
318- } else if (frameRate. isValid () && frameRate.isVoteValidForMrr (isVrrDevice)) {
324+ } else if (hasFrameRateOpinion && frameRate.isVoteValidForMrr (isVrrDevice)) {
319325 info->setLayerVote ({setFrameRateVoteType,
320326 isValuelessVote ? 0_Hz : frameRate.vote .rate ,
321327 frameRate.vote .seamlessness , frameRate.category });
@@ -332,7 +338,7 @@ void LayerHistory::partitionLayers(nsecs_t now, bool isVrrDevice) {
332338 gameDefaultFrameRateOverride.getIntValue ());
333339 }
334340 } else {
335- if (frameRate. isValid () && !frameRate.isVoteValidForMrr (isVrrDevice)) {
341+ if (hasFrameRateOpinion && !frameRate.isVoteValidForMrr (isVrrDevice)) {
336342 SFTRACE_FORMAT_INSTANT (" Reset layer to ignore explicit vote on MRR %s: %s "
337343 " %s %s" ,
338344 info->getName ().c_str (),
0 commit comments