Only update mode for zones with nonzero size

This commit is contained in:
Adam Honse 2020-05-12 15:02:02 -05:00
parent cad356efca
commit 23d51f65d0
6 changed files with 54 additions and 48 deletions

View file

@ -56,23 +56,21 @@ void AuraAddressableController::SetChannelLEDs(unsigned char channel, RGBColor *
void AuraAddressableController::SetMode
(
unsigned char mode,
unsigned char red,
unsigned char grn,
unsigned char blu
unsigned char channel,
unsigned char mode,
unsigned char red,
unsigned char grn,
unsigned char blu
)
{
for(int channel_idx = 0; channel_idx < GetChannelCount(); channel_idx++)
{
SendEffect
(
channel_idx,
mode,
red,
grn,
blu
);
}
SendEffect
(
channel,
mode,
red,
grn,
blu
);
}
void AuraAddressableController::SendEffect

View file

@ -36,10 +36,11 @@ public:
void SetMode
(
unsigned char mode,
unsigned char red,
unsigned char grn,
unsigned char blu
unsigned char channel,
unsigned char mode,
unsigned char red,
unsigned char grn,
unsigned char blu
);
private:

View file

@ -57,10 +57,11 @@ void AuraMainboardController::SetChannelLEDs(unsigned char channel, RGBColor * c
void AuraMainboardController::SetMode
(
unsigned char mode,
unsigned char red,
unsigned char grn,
unsigned char blu
unsigned char channel,
unsigned char mode,
unsigned char red,
unsigned char grn,
unsigned char blu
)
{
this->mode = mode;
@ -69,22 +70,19 @@ void AuraMainboardController::SetMode
led_data[1] = grn;
led_data[2] = blu;
for(int channel_idx = 0; channel_idx < GetChannelCount(); channel_idx++)
{
SendEffect
(
channel_idx,
mode
);
SendDirect
(
channel_idx,
0,
1,
led_data
);
SendCommit();
}
SendEffect
(
channel,
mode
);
SendDirect
(
channel,
0,
1,
led_data
);
SendCommit();
}
void AuraMainboardController::SendEffect

View file

@ -37,10 +37,11 @@ public:
void SetMode
(
unsigned char mode,
unsigned char red,
unsigned char grn,
unsigned char blu
unsigned char channel,
unsigned char mode,
unsigned char red,
unsigned char grn,
unsigned char blu
);
private:

View file

@ -59,11 +59,13 @@ public:
virtual void SetMode
(
unsigned char mode,
unsigned char red,
unsigned char grn,
unsigned char blu
unsigned char channel,
unsigned char mode,
unsigned char red,
unsigned char grn,
unsigned char blu
) = 0;
protected:
hid_device* dev;
private:

View file

@ -212,5 +212,11 @@ void RGBController_AuraUSB::UpdateMode()
blu = RGBGetBValue(modes[active_mode].colors[0]);
}
aura->SetMode(modes[active_mode].value, red, grn, blu);
for(unsigned int zone_idx; zone_idx < zones.size(); zone_idx++)
{
if(zones[zone_idx].leds_count > 0)
{
aura->SetMode(zone_idx, modes[active_mode].value, red, grn, blu);
}
}
}