Skip to content

Commit 9345682

Browse files
Greatly reduce flickering of HyperX DRAM by saving the apply until all LEDs have been written
1 parent 7d76d60 commit 9345682

3 files changed

Lines changed: 13 additions & 4 deletions

File tree

Controllers/HyperXDRAMController/HyperXDRAMController.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,12 @@ unsigned int HyperXDRAMController::GetMode()
7676
return(mode);
7777
}
7878

79+
void HyperXDRAMController::SendApply()
80+
{
81+
bus->i2c_smbus_write_byte_data(dev, HYPERX_REG_APPLY, 0x02);
82+
bus->i2c_smbus_write_byte_data(dev, HYPERX_REG_APPLY, 0x03);
83+
}
84+
7985
void HyperXDRAMController::SetEffectColor(unsigned char red, unsigned char green, unsigned char blue)
8086
{
8187
bus->i2c_smbus_write_byte_data(dev, HYPERX_REG_APPLY, 0x01);
@@ -179,9 +185,6 @@ void HyperXDRAMController::SetLEDColor(unsigned int slot, unsigned int led, unsi
179185
bus->i2c_smbus_write_byte_data(dev, green_base + (3 * led), green);
180186
bus->i2c_smbus_write_byte_data(dev, blue_base + (3 * led), blue );
181187
bus->i2c_smbus_write_byte_data(dev, bright_base + (3 * led), 0x64 );
182-
183-
bus->i2c_smbus_write_byte_data(dev, HYPERX_REG_APPLY, 0x02);
184-
bus->i2c_smbus_write_byte_data(dev, HYPERX_REG_APPLY, 0x03);
185188
}
186189

187190
void HyperXDRAMController::SetMode(unsigned char new_mode, bool random, unsigned short new_speed)

Controllers/HyperXDRAMController/HyperXDRAMController.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,11 @@ class HyperXDRAMController
212212
unsigned int GetLEDCount();
213213
unsigned int GetSlotCount();
214214
unsigned int GetMode();
215-
void SetMode(unsigned char new_mode, bool random, unsigned short new_speed);
216215

216+
void SendApply();
217+
218+
void SetMode(unsigned char new_mode, bool random, unsigned short new_speed);
219+
217220
void SetAllColors(unsigned char red, unsigned char green, unsigned char blue);
218221
void SetEffectColor(unsigned char red, unsigned char green, unsigned char blue);
219222
void SetLEDColor(unsigned int led, unsigned char red, unsigned char green, unsigned char blue);

Controllers/HyperXDRAMController/RGBController_HyperXDRAM.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ void RGBController_HyperXDRAM::DeviceUpdateLEDs()
181181
unsigned char blu = RGBGetBValue(color);
182182
hyperx->SetLEDColor(led_idx, red, grn, blu);
183183
}
184+
hyperx->SendApply();
184185
}
185186
else
186187
{
@@ -204,6 +205,7 @@ void RGBController_HyperXDRAM::UpdateZoneLEDs(int zone)
204205
unsigned char blu = RGBGetBValue(color);
205206
hyperx->SetLEDColor(led, red, grn, blu);
206207
}
208+
hyperx->SendApply();
207209
}
208210
else
209211
{
@@ -229,6 +231,7 @@ void RGBController_HyperXDRAM::UpdateSingleLED(int led)
229231
{
230232
hyperx->SetEffectColor(red, grn, blu);
231233
}
234+
hyperx->SendApply();
232235
}
233236

234237
void RGBController_HyperXDRAM::SetCustomMode()

0 commit comments

Comments
 (0)