From af04dd8d5853d8c40db4fc9ecde0d95f3ef60f93 Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Fri, 9 Jan 2026 01:19:20 -0600 Subject: [PATCH] [WIP] Improve memory management of matrix maps --- .../RGBController_AOCKeyboard.cpp | 22 +++---- .../RGBController_AlienwareAW410K.cpp | 11 ---- .../RGBController_AlienwareAW510K.cpp | 11 ---- .../RGBController_AsusAuraCoreLaptop.cpp | 1 + .../RGBController_AsusAuraKeyboard.cpp | 18 ++---- .../RGBController_CherryKeyboard.cpp | 11 ---- .../RGBController_CMKeyboardController.cpp | 17 +---- .../RGBController_CorsairK65Mini.cpp | 16 ++--- .../RGBController_CorsairPeripheral.cpp | 11 ---- .../RGBController_CorsairV2Hardware.cpp | 13 +--- .../RGBController_CorsairV2Software.cpp | 13 +--- .../RGBController_CorsairWireless.cpp | 11 ---- .../DMXController/RGBController_DMX.cpp | 16 ----- .../RGBController_DasKeyboard.cpp | 10 --- .../DebugController/RGBController_Debug.cpp | 3 +- .../RGBController_DuckyKeyboard.cpp | 11 ---- .../E131Controller/RGBController_E131.cpp | 23 ++----- .../RGBController_EVisionKeyboard.cpp | 11 ---- .../RGBController_FnaticStreak.cpp | 11 ---- .../RGBController_GaiZhongGai.cpp | 11 ---- .../RGBController_GigabyteAorusLaptop.cpp | 14 ++--- .../RGBController_HYTEKeyboard.cpp | 22 +++---- .../RGBController_HyperXAlloyElite2.cpp | 11 ---- .../RGBController_HyperXAlloyElite.cpp | 11 ---- .../RGBController_HyperXAlloyFPS.cpp | 11 ---- ...GBController_HyperXAlloyOrigins60and65.cpp | 15 +---- .../RGBController_HyperXAlloyOrigins.cpp | 11 ---- .../RGBController_HyperXAlloyOriginsCore.cpp | 12 +--- .../RGBController_HyperXMicrophoneV2.cpp | 19 +++--- .../RGBController_KeychronKeyboard.cpp | 14 ++--- .../RGBController_Lenovo_Gen7_8.cpp | 9 +-- .../RGBController_LianLiUniHubAL.cpp | 11 ---- .../RGBController_LightSalt.cpp | 11 ---- .../RGBController_LogitechG810.cpp | 11 ---- .../RGBController_LogitechG815.cpp | 11 ---- .../RGBController_LogitechG910.cpp | 11 ---- .../RGBController_LogitechG915.cpp | 11 ---- .../RGBController_LogitechGProKeyboard.cpp | 11 ---- .../RGBController_MNTKeyboard.cpp | 1 - .../RGBController_MintakaKeyboard.cpp | 22 +++---- .../RGBController_MountainKeyboard.cpp | 11 ---- .../RGBController_OKSKeyboard.cpp | 11 ---- .../RGBController_QMKOpenRGBRev9.cpp | 8 +-- .../RGBController_QMKOpenRGBRevB.cpp | 8 +-- .../RGBController_QMKOpenRGBRevD.cpp | 8 +-- .../RGBController_QMKOpenRGBRevE.cpp | 8 +-- .../RGBController_QMKVialRGB.cpp | 19 +++--- .../RazerController/RGBController_Razer.cpp | 2 + .../RGBController_RazerAddressable.cpp | 2 +- .../RGBController_RazerHanbo.cpp | 1 + .../RGBController_RazerKraken.cpp | 8 +-- .../RGBController_RazerKrakenV3.cpp | 8 +-- .../RGBController_RedSquareKeyrox.cpp | 14 ++--- ...GBController_RedSquareKeyroxTKLClassic.cpp | 22 +++---- .../RGBController_SinowealthKeyboard10c.cpp | 18 +++--- .../RGBController_SinowealthKeyboard90.cpp | 11 ---- .../RGBController_SkyloongGK104Pro.cpp | 18 +++--- .../RGBController_SteelSeriesApex.cpp | 19 ++---- .../SteelSeriesApexRegions.h | 2 - .../RGBController_ElgatoStreamDeck.cpp | 1 + .../RGBController_ThermaltakePoseidonZRGB.cpp | 11 ---- .../RGBController_ValkyrieKeyboard.cpp | 12 ---- .../RGBController_WinbondGamingKeyboard.cpp | 18 +++--- .../RGBController_WootingKeyboard.cpp | 12 +--- .../RGBController_XPGSummoner.cpp | 7 --- .../RGBController_ZETBladeOptical.cpp | 11 ---- RGBController/RGBController.cpp | 63 ++++++++++++++++++- RGBController/RGBController.h | 10 ++- 68 files changed, 235 insertions(+), 608 deletions(-) diff --git a/Controllers/AOCKeyboardController/RGBController_AOCKeyboard.cpp b/Controllers/AOCKeyboardController/RGBController_AOCKeyboard.cpp index a10acf1ee..e32c44554 100644 --- a/Controllers/AOCKeyboardController/RGBController_AOCKeyboard.cpp +++ b/Controllers/AOCKeyboardController/RGBController_AOCKeyboard.cpp @@ -266,20 +266,20 @@ void RGBController_AOCKeyboard::SetupZones() | Create the keyboard zone usiung Keyboard Layout Manager | \*---------------------------------------------------------*/ zone new_zone; - new_zone.name = ZONE_EN_KEYBOARD; - new_zone.type = ZONE_TYPE_MATRIX; + new_zone.name = ZONE_EN_KEYBOARD; + new_zone.type = ZONE_TYPE_MATRIX; KeyboardLayoutManager new_kb(KEYBOARD_LAYOUT_ANSI_QWERTY, KEYBOARD_SIZE_FULL, aoc_keyboard_offset_values); - matrix_map_type * new_map = new matrix_map_type; - new_zone.matrix_map = new_map; - new_zone.matrix_map->height = new_kb.GetRowCount(); - new_zone.matrix_map->width = new_kb.GetColumnCount(); - - new_zone.matrix_map->map = new unsigned int[new_map->height * new_map->width]; - new_zone.leds_count = new_kb.GetKeyCount(); - new_zone.leds_min = new_zone.leds_count; - new_zone.leds_max = new_zone.leds_count; + matrix_map_type * new_map = new matrix_map_type; + new_zone.matrix_map = new_map; + new_zone.matrix_map->height = new_kb.GetRowCount(); + new_zone.matrix_map->width = new_kb.GetColumnCount(); + new_zone.matrix_map->delete_map = true; + new_zone.matrix_map->map = new unsigned int[new_map->height * new_map->width]; + new_zone.leds_count = new_kb.GetKeyCount(); + new_zone.leds_min = new_zone.leds_count; + new_zone.leds_max = new_zone.leds_count; /*---------------------------------------------------------*\ | Matrix map still uses declared zone rows and columns | diff --git a/Controllers/AlienwareKeyboardController/AlienwareAW410KController/RGBController_AlienwareAW410K.cpp b/Controllers/AlienwareKeyboardController/AlienwareAW410KController/RGBController_AlienwareAW410K.cpp index 397c79aab..49c79270d 100644 --- a/Controllers/AlienwareKeyboardController/AlienwareAW410KController/RGBController_AlienwareAW410K.cpp +++ b/Controllers/AlienwareKeyboardController/AlienwareAW410KController/RGBController_AlienwareAW410K.cpp @@ -278,17 +278,6 @@ RGBController_AlienwareAW410K::RGBController_AlienwareAW410K(AlienwareAW410KCont RGBController_AlienwareAW410K::~RGBController_AlienwareAW410K() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/AlienwareKeyboardController/AlienwareAW510KController/RGBController_AlienwareAW510K.cpp b/Controllers/AlienwareKeyboardController/AlienwareAW510KController/RGBController_AlienwareAW510K.cpp index a96679f42..ddb58997b 100644 --- a/Controllers/AlienwareKeyboardController/AlienwareAW510KController/RGBController_AlienwareAW510K.cpp +++ b/Controllers/AlienwareKeyboardController/AlienwareAW510KController/RGBController_AlienwareAW510K.cpp @@ -277,17 +277,6 @@ RGBController_AlienwareAW510K::RGBController_AlienwareAW510K(AlienwareAW510KCont RGBController_AlienwareAW510K::~RGBController_AlienwareAW510K() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/RGBController_AsusAuraCoreLaptop.cpp b/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/RGBController_AsusAuraCoreLaptop.cpp index b45467369..af06abc4b 100644 --- a/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/RGBController_AsusAuraCoreLaptop.cpp +++ b/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/RGBController_AsusAuraCoreLaptop.cpp @@ -348,6 +348,7 @@ void RGBController_AsusAuraCoreLaptop::SetupZones() \*---------------------------------------------------------*/ new_map->height = new_kb.GetRowCount(); new_map->width = new_kb.GetColumnCount(); + new_map->delete_map = true; new_map->map = new unsigned int[new_map->height * new_map->width]; new_kb.GetKeyMap(new_map->map, KEYBOARD_MAP_FILL_TYPE_COUNT); diff --git a/Controllers/AsusAuraUSBController/AsusAuraKeyboardController/RGBController_AsusAuraKeyboard.cpp b/Controllers/AsusAuraUSBController/AsusAuraKeyboardController/RGBController_AsusAuraKeyboard.cpp index 5a25f4167..a48a2912e 100644 --- a/Controllers/AsusAuraUSBController/AsusAuraKeyboardController/RGBController_AsusAuraKeyboard.cpp +++ b/Controllers/AsusAuraUSBController/AsusAuraKeyboardController/RGBController_AsusAuraKeyboard.cpp @@ -380,14 +380,6 @@ RGBController_AuraKeyboard::RGBController_AuraKeyboard(AuraKeyboardController* c RGBController_AuraKeyboard::~RGBController_AuraKeyboard() { - for(unsigned int zone_idx = 0; zone_idx < zones.size(); zone_idx++) - { - if(zones[zone_idx].type == ZONE_TYPE_MATRIX) - { - delete zones[zone_idx].matrix_map; - } - } - delete controller; } @@ -407,7 +399,7 @@ void RGBController_AuraKeyboard::SetupZones() \*-----------------------------------------------------*/ case SCOPE_LAYOUT: led_names = default_led_names; - led_zones.push_back({ZONE_EN_KEYBOARD, ZONE_TYPE_MATRIX, 106, new matrix_map_type{6, 22, (unsigned int *)&scope_matrix_map}}); + led_zones.push_back({ZONE_EN_KEYBOARD, ZONE_TYPE_MATRIX, 106, new matrix_map_type(6, 22, false, (unsigned int *)&scope_matrix_map)}); led_names.insert(led_names.begin() + 7, {KEY_EN_LEFT_WINDOWS, 0x15}); led_names.insert(led_names.begin() + 12, {KEY_EN_LEFT_ALT, 0x1D}); @@ -415,7 +407,7 @@ void RGBController_AuraKeyboard::SetupZones() case SCOPE_RX_LAYOUT: led_names = default_led_names; - led_zones.push_back({ZONE_EN_KEYBOARD, ZONE_TYPE_MATRIX, 106, new matrix_map_type{6, 22, (unsigned int *)&scope_matrix_map}}); + led_zones.push_back({ZONE_EN_KEYBOARD, ZONE_TYPE_MATRIX, 106, new matrix_map_type(6, 22, false, (unsigned int *)&scope_matrix_map)}); led_zones.push_back({"Logo", ZONE_TYPE_SINGLE, 1, NULL}); led_names.insert(led_names.begin() + 7, {KEY_EN_LEFT_WINDOWS, 0x15}); @@ -425,7 +417,7 @@ void RGBController_AuraKeyboard::SetupZones() case SCOPE_TKL_LAYOUT: led_names = default_tkl_led_names; - led_zones.push_back({ZONE_EN_KEYBOARD, ZONE_TYPE_MATRIX, 86, new matrix_map_type{6, 18, (unsigned int *)&scope_tkl_matrix_map}}); + led_zones.push_back({ZONE_EN_KEYBOARD, ZONE_TYPE_MATRIX, 86, new matrix_map_type(6, 18, false, (unsigned int *)&scope_tkl_matrix_map)}); led_zones.push_back({"Logo", ZONE_TYPE_LINEAR, 2, NULL}); led_zones.push_back({"Underglow", ZONE_TYPE_LINEAR, 26, NULL}); @@ -435,7 +427,7 @@ void RGBController_AuraKeyboard::SetupZones() case FLARE_LAYOUT: led_names = default_led_names; - led_zones.push_back({ZONE_EN_KEYBOARD, ZONE_TYPE_MATRIX, 106, new matrix_map_type{6, 22, (unsigned int *)&flare_matrix_map}}); + led_zones.push_back({ZONE_EN_KEYBOARD, ZONE_TYPE_MATRIX, 106, new matrix_map_type(6, 22, false, (unsigned int *)&flare_matrix_map)}); led_zones.push_back({"Logo", ZONE_TYPE_SINGLE, 1, NULL}); led_zones.push_back({"Underglow", ZONE_TYPE_SINGLE, 2, NULL}); @@ -449,7 +441,7 @@ void RGBController_AuraKeyboard::SetupZones() case FALCHION_LAYOUT: led_names = default_65pct_led_names; - led_zones.push_back({ZONE_EN_KEYBOARD, ZONE_TYPE_MATRIX, 68, new matrix_map_type{5, 16, (unsigned int *)&falchion_matrix_map}}); + led_zones.push_back({ZONE_EN_KEYBOARD, ZONE_TYPE_MATRIX, 68, new matrix_map_type(5, 16, false, (unsigned int *)&falchion_matrix_map)}); break; } diff --git a/Controllers/CherryKeyboardController/RGBController_CherryKeyboard.cpp b/Controllers/CherryKeyboardController/RGBController_CherryKeyboard.cpp index 2bf428529..911269422 100644 --- a/Controllers/CherryKeyboardController/RGBController_CherryKeyboard.cpp +++ b/Controllers/CherryKeyboardController/RGBController_CherryKeyboard.cpp @@ -312,17 +312,6 @@ RGBController_CherryKeyboard::RGBController_CherryKeyboard(CherryKeyboardControl RGBController_CherryKeyboard::~RGBController_CherryKeyboard() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/CoolerMasterController/CMKeyboardController/RGBController_CMKeyboardController.cpp b/Controllers/CoolerMasterController/CMKeyboardController/RGBController_CMKeyboardController.cpp index 8e0baa7d8..7e834709e 100644 --- a/Controllers/CoolerMasterController/CMKeyboardController/RGBController_CMKeyboardController.cpp +++ b/Controllers/CoolerMasterController/CMKeyboardController/RGBController_CMKeyboardController.cpp @@ -49,22 +49,6 @@ RGBController_CMKeyboardController::RGBController_CMKeyboardController(CMKeyboar RGBController_CMKeyboardController::~RGBController_CMKeyboardController() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - if(zones[zone_index].matrix_map->map != NULL) - { - delete zones[zone_index].matrix_map->map; - } - - delete zones[zone_index].matrix_map; - } - } - if(m_pController) { delete m_pController; @@ -111,6 +95,7 @@ void RGBController_CMKeyboardController::SetupZones() new_map->height = new_kb.GetRowCount(); new_map->width = new_kb.GetColumnCount(); + new_map->delete_map = true; new_map->map = new unsigned int[new_map->height * new_map->width]; /*---------------------------------------------------------*\ diff --git a/Controllers/CorsairPeripheralController/RGBController_CorsairK65Mini.cpp b/Controllers/CorsairPeripheralController/RGBController_CorsairK65Mini.cpp index 273199a69..762b61763 100644 --- a/Controllers/CorsairPeripheralController/RGBController_CorsairK65Mini.cpp +++ b/Controllers/CorsairPeripheralController/RGBController_CorsairK65Mini.cpp @@ -178,17 +178,17 @@ RGBController_CorsairK65Mini::~RGBController_CorsairK65Mini() void RGBController_CorsairK65Mini::SetupZones() { - unsigned int zone_size = 0; + unsigned int zone_size = 0; zone keyboard_zone; - keyboard_zone.name = ZONE_EN_KEYBOARD; - keyboard_zone.type = ZONE_TYPE_MATRIX; + keyboard_zone.name = ZONE_EN_KEYBOARD; + keyboard_zone.type = ZONE_TYPE_MATRIX; - keyboard_zone.matrix_map = new matrix_map_type; - keyboard_zone.matrix_map->height = HEIGHT; - keyboard_zone.matrix_map->width = WIDTH; - - keyboard_zone.matrix_map->map = new unsigned int[HEIGHT * WIDTH]; + keyboard_zone.matrix_map = new matrix_map_type; + keyboard_zone.matrix_map->height = HEIGHT; + keyboard_zone.matrix_map->width = WIDTH; + keyboard_zone.matrix_map->delete_map = true; + keyboard_zone.matrix_map->map = new unsigned int[HEIGHT * WIDTH]; for(unsigned int w = 0; w < WIDTH; w++) { diff --git a/Controllers/CorsairPeripheralController/RGBController_CorsairPeripheral.cpp b/Controllers/CorsairPeripheralController/RGBController_CorsairPeripheral.cpp index e53263022..25f59dc0b 100644 --- a/Controllers/CorsairPeripheralController/RGBController_CorsairPeripheral.cpp +++ b/Controllers/CorsairPeripheralController/RGBController_CorsairPeripheral.cpp @@ -929,17 +929,6 @@ RGBController_CorsairPeripheral::RGBController_CorsairPeripheral(CorsairPeripher RGBController_CorsairPeripheral::~RGBController_CorsairPeripheral() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/CorsairPeripheralV2Controller/RGBController_CorsairV2Hardware.cpp b/Controllers/CorsairPeripheralV2Controller/RGBController_CorsairV2Hardware.cpp index 9453b1904..be176c816 100644 --- a/Controllers/CorsairPeripheralV2Controller/RGBController_CorsairV2Hardware.cpp +++ b/Controllers/CorsairPeripheralV2Controller/RGBController_CorsairV2Hardware.cpp @@ -79,17 +79,6 @@ RGBController_CorsairV2HW::~RGBController_CorsairV2HW() keepalive_thread->join(); delete keepalive_thread; - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].type == ZONE_TYPE_MATRIX) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } @@ -140,7 +129,7 @@ void RGBController_CorsairV2HW::SetupZones() matrix_map_type * new_map = new matrix_map_type; new_zone.matrix_map = new_map; - + new_map->delete_map = true; new_map->height = corsair->zones[i]->rows; new_map->width = corsair->zones[i]->cols; new_map->map = new unsigned int[new_map->height * new_map->width]; diff --git a/Controllers/CorsairPeripheralV2Controller/RGBController_CorsairV2Software.cpp b/Controllers/CorsairPeripheralV2Controller/RGBController_CorsairV2Software.cpp index dc28135c9..77435e1c0 100644 --- a/Controllers/CorsairPeripheralV2Controller/RGBController_CorsairV2Software.cpp +++ b/Controllers/CorsairPeripheralV2Controller/RGBController_CorsairV2Software.cpp @@ -66,17 +66,6 @@ RGBController_CorsairV2SW::~RGBController_CorsairV2SW() keepalive_thread->join(); delete keepalive_thread; - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].type == ZONE_TYPE_MATRIX) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } @@ -127,7 +116,7 @@ void RGBController_CorsairV2SW::SetupZones() matrix_map_type * new_map = new matrix_map_type; new_zone.matrix_map = new_map; - + new_map->delete_map = true; new_map->height = corsair->zones[i]->rows; new_map->width = corsair->zones[i]->cols; new_map->map = new unsigned int[new_map->height * new_map->width]; diff --git a/Controllers/CorsairWirelessController/RGBController_CorsairWireless.cpp b/Controllers/CorsairWirelessController/RGBController_CorsairWireless.cpp index ad7868df0..fd5be5703 100644 --- a/Controllers/CorsairWirelessController/RGBController_CorsairWireless.cpp +++ b/Controllers/CorsairWirelessController/RGBController_CorsairWireless.cpp @@ -233,17 +233,6 @@ RGBController_CorsairWireless::~RGBController_CorsairWireless() keepalive_thread->join(); delete keepalive_thread; - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/DMXController/RGBController_DMX.cpp b/Controllers/DMXController/RGBController_DMX.cpp index 8736b7185..c4cae9a12 100644 --- a/Controllers/DMXController/RGBController_DMX.cpp +++ b/Controllers/DMXController/RGBController_DMX.cpp @@ -107,22 +107,6 @@ RGBController_DMX::~RGBController_DMX() keepalive_thread->join(); delete keepalive_thread; } - - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - if(zones[zone_index].matrix_map->map != NULL) - { - delete zones[zone_index].matrix_map->map; - } - - delete zones[zone_index].matrix_map; - } - } } void RGBController_DMX::SetupZones() diff --git a/Controllers/DasKeyboardController/RGBController_DasKeyboard.cpp b/Controllers/DasKeyboardController/RGBController_DasKeyboard.cpp index 6643c7e85..82d6625f1 100644 --- a/Controllers/DasKeyboardController/RGBController_DasKeyboard.cpp +++ b/Controllers/DasKeyboardController/RGBController_DasKeyboard.cpp @@ -248,16 +248,6 @@ RGBController_DasKeyboard::RGBController_DasKeyboard(DasKeyboardController* cont RGBController_DasKeyboard::~RGBController_DasKeyboard() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - unsigned int zone_size = (unsigned int)zones.size(); - - for(unsigned int zone_index = 0; zone_index < zone_size; zone_index++) - { - delete zones[zone_index].matrix_map; - } - delete controller; } diff --git a/Controllers/DebugController/RGBController_Debug.cpp b/Controllers/DebugController/RGBController_Debug.cpp index 811e0e428..2fd0b49da 100644 --- a/Controllers/DebugController/RGBController_Debug.cpp +++ b/Controllers/DebugController/RGBController_Debug.cpp @@ -190,7 +190,8 @@ RGBController_Debug::RGBController_Debug(bool custom_controller, json debug_sett } } - custom_zone.matrix_map->map = MatrixARR; + custom_zone.matrix_map->delete_map = true; + custom_zone.matrix_map->map = MatrixARR; } /*---------------------------------------------*\ diff --git a/Controllers/DuckyKeyboardController/RGBController_DuckyKeyboard.cpp b/Controllers/DuckyKeyboardController/RGBController_DuckyKeyboard.cpp index 4a5cc2548..7aa238a64 100644 --- a/Controllers/DuckyKeyboardController/RGBController_DuckyKeyboard.cpp +++ b/Controllers/DuckyKeyboardController/RGBController_DuckyKeyboard.cpp @@ -222,17 +222,6 @@ RGBController_DuckyKeyboard::RGBController_DuckyKeyboard(DuckyKeyboardController RGBController_DuckyKeyboard::~RGBController_DuckyKeyboard() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/E131Controller/RGBController_E131.cpp b/Controllers/E131Controller/RGBController_E131.cpp index 7e1d00c6c..459685e8c 100644 --- a/Controllers/E131Controller/RGBController_E131.cpp +++ b/Controllers/E131Controller/RGBController_E131.cpp @@ -205,9 +205,10 @@ RGBController_E131::RGBController_E131(std::vector device_list) unsigned int led_idx = 0; matrix_map_type * new_map = new matrix_map_type; - new_map->width = devices[device_idx].matrix_width; - new_map->height = devices[device_idx].matrix_height; - new_map->map = new unsigned int[devices[device_idx].matrix_width * devices[device_idx].matrix_height]; + new_map->width = devices[device_idx].matrix_width; + new_map->height = devices[device_idx].matrix_height; + new_map->delete_map = true; + new_map->map = new unsigned int[devices[device_idx].matrix_width * devices[device_idx].matrix_height]; switch(devices[device_idx].matrix_order) { @@ -316,22 +317,6 @@ RGBController_E131::~RGBController_E131() keepalive_thread->join(); delete keepalive_thread; } - - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - if(zones[zone_index].matrix_map->map != NULL) - { - delete zones[zone_index].matrix_map->map; - } - - delete zones[zone_index].matrix_map; - } - } } void RGBController_E131::SetupZones() diff --git a/Controllers/EVisionKeyboardController/RGBController_EVisionKeyboard.cpp b/Controllers/EVisionKeyboardController/RGBController_EVisionKeyboard.cpp index ab463581f..97b1843ce 100644 --- a/Controllers/EVisionKeyboardController/RGBController_EVisionKeyboard.cpp +++ b/Controllers/EVisionKeyboardController/RGBController_EVisionKeyboard.cpp @@ -302,17 +302,6 @@ RGBController_EVisionKeyboard::RGBController_EVisionKeyboard(EVisionKeyboardCont RGBController_EVisionKeyboard::~RGBController_EVisionKeyboard() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/FnaticStreakController/RGBController_FnaticStreak.cpp b/Controllers/FnaticStreakController/RGBController_FnaticStreak.cpp index c6306f930..def789710 100644 --- a/Controllers/FnaticStreakController/RGBController_FnaticStreak.cpp +++ b/Controllers/FnaticStreakController/RGBController_FnaticStreak.cpp @@ -493,17 +493,6 @@ RGBController_FnaticStreak::~RGBController_FnaticStreak() keepalive_thread->join(); delete keepalive_thread; - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/GaiZongGaiKeyboardController/RGBController_GaiZhongGai.cpp b/Controllers/GaiZongGaiKeyboardController/RGBController_GaiZhongGai.cpp index 930d4ef8f..d13a7ca6b 100644 --- a/Controllers/GaiZongGaiKeyboardController/RGBController_GaiZhongGai.cpp +++ b/Controllers/GaiZongGaiKeyboardController/RGBController_GaiZhongGai.cpp @@ -451,17 +451,6 @@ RGBController_GaiZhongGaiKeyboard::RGBController_GaiZhongGaiKeyboard(GaiZhongGai RGBController_GaiZhongGaiKeyboard::~RGBController_GaiZhongGaiKeyboard() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/GigabyteAorusLaptopController/RGBController_GigabyteAorusLaptop.cpp b/Controllers/GigabyteAorusLaptopController/RGBController_GigabyteAorusLaptop.cpp index 7ddd566db..70a9ec1f5 100644 --- a/Controllers/GigabyteAorusLaptopController/RGBController_GigabyteAorusLaptop.cpp +++ b/Controllers/GigabyteAorusLaptopController/RGBController_GigabyteAorusLaptop.cpp @@ -400,14 +400,14 @@ void RGBController_GigabyteAorusLaptop::SetupZones() unsigned int zone_size = 0; zone keyboard_zone; - keyboard_zone.name = "Keyboard layout"; - keyboard_zone.type = ZONE_TYPE_MATRIX; + keyboard_zone.name = "Keyboard layout"; + keyboard_zone.type = ZONE_TYPE_MATRIX; - keyboard_zone.matrix_map = new matrix_map_type; - keyboard_zone.matrix_map->height = aorus_laptop_default_keyboard_layout.height; - keyboard_zone.matrix_map->width = aorus_laptop_default_keyboard_layout.width; - - keyboard_zone.matrix_map->map = new unsigned int[aorus_laptop_default_keyboard_layout.height * aorus_laptop_default_keyboard_layout.width]; + keyboard_zone.matrix_map = new matrix_map_type; + keyboard_zone.matrix_map->height = aorus_laptop_default_keyboard_layout.height; + keyboard_zone.matrix_map->width = aorus_laptop_default_keyboard_layout.width; + keyboard_zone.matrix_map->delete_map = true; + keyboard_zone.matrix_map->map = new unsigned int[aorus_laptop_default_keyboard_layout.height * aorus_laptop_default_keyboard_layout.width]; for(unsigned int h = 0; h < aorus_laptop_default_keyboard_layout.height; h++) { diff --git a/Controllers/HYTEKeyboardController/RGBController_HYTEKeyboard.cpp b/Controllers/HYTEKeyboardController/RGBController_HYTEKeyboard.cpp index a1de70186..5f8268760 100644 --- a/Controllers/HYTEKeyboardController/RGBController_HYTEKeyboard.cpp +++ b/Controllers/HYTEKeyboardController/RGBController_HYTEKeyboard.cpp @@ -89,18 +89,18 @@ void RGBController_HYTEKeyboard::SetupZones() zone keyboard_zone; - keyboard_zone.name = "Keyboard"; - keyboard_zone.type = ZONE_TYPE_MATRIX; + keyboard_zone.name = "Keyboard"; + keyboard_zone.type = ZONE_TYPE_MATRIX; - matrix_map_type * keyboard_map = new matrix_map_type; - keyboard_zone.matrix_map = keyboard_map; - keyboard_zone.matrix_map->height = new_kb.GetRowCount(); - keyboard_zone.matrix_map->width = new_kb.GetColumnCount(); - - keyboard_zone.matrix_map->map = new unsigned int[keyboard_map->height * keyboard_map->width]; - keyboard_zone.leds_count = new_kb.GetKeyCount(); - keyboard_zone.leds_min = keyboard_zone.leds_count; - keyboard_zone.leds_max = keyboard_zone.leds_count; + matrix_map_type * keyboard_map = new matrix_map_type; + keyboard_zone.matrix_map = keyboard_map; + keyboard_zone.matrix_map->height = new_kb.GetRowCount(); + keyboard_zone.matrix_map->width = new_kb.GetColumnCount(); + keyboard_zone.matrix_map->delete_map = true; + keyboard_zone.matrix_map->map = new unsigned int[keyboard_map->height * keyboard_map->width]; + keyboard_zone.leds_count = new_kb.GetKeyCount(); + keyboard_zone.leds_min = keyboard_zone.leds_count; + keyboard_zone.leds_max = keyboard_zone.leds_count; zones.push_back(keyboard_zone); diff --git a/Controllers/HyperXKeyboardController/HyperXAlloyElite2Controller/RGBController_HyperXAlloyElite2.cpp b/Controllers/HyperXKeyboardController/HyperXAlloyElite2Controller/RGBController_HyperXAlloyElite2.cpp index 4b316a0cb..3ed4f405e 100644 --- a/Controllers/HyperXKeyboardController/HyperXAlloyElite2Controller/RGBController_HyperXAlloyElite2.cpp +++ b/Controllers/HyperXKeyboardController/HyperXAlloyElite2Controller/RGBController_HyperXAlloyElite2.cpp @@ -242,17 +242,6 @@ RGBController_HyperXAlloyElite2::~RGBController_HyperXAlloyElite2() keepalive_thread->join(); delete keepalive_thread; - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != nullptr) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/HyperXKeyboardController/HyperXAlloyEliteController/RGBController_HyperXAlloyElite.cpp b/Controllers/HyperXKeyboardController/HyperXAlloyEliteController/RGBController_HyperXAlloyElite.cpp index bab5047d3..d292c2062 100644 --- a/Controllers/HyperXKeyboardController/HyperXAlloyEliteController/RGBController_HyperXAlloyElite.cpp +++ b/Controllers/HyperXKeyboardController/HyperXAlloyEliteController/RGBController_HyperXAlloyElite.cpp @@ -255,17 +255,6 @@ RGBController_HyperXAlloyElite::~RGBController_HyperXAlloyElite() keepalive_thread->join(); delete keepalive_thread; - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/HyperXKeyboardController/HyperXAlloyFPSController/RGBController_HyperXAlloyFPS.cpp b/Controllers/HyperXKeyboardController/HyperXAlloyFPSController/RGBController_HyperXAlloyFPS.cpp index eaf12fef4..2339c9209 100644 --- a/Controllers/HyperXKeyboardController/HyperXAlloyFPSController/RGBController_HyperXAlloyFPS.cpp +++ b/Controllers/HyperXKeyboardController/HyperXAlloyFPSController/RGBController_HyperXAlloyFPS.cpp @@ -196,17 +196,6 @@ RGBController_HyperXAlloyFPS::~RGBController_HyperXAlloyFPS() keepalive_thread->join(); delete keepalive_thread; - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/HyperXKeyboardController/HyperXAlloyOrigins60and65Controller/RGBController_HyperXAlloyOrigins60and65.cpp b/Controllers/HyperXKeyboardController/HyperXAlloyOrigins60and65Controller/RGBController_HyperXAlloyOrigins60and65.cpp index d0385fdc8..f998785eb 100644 --- a/Controllers/HyperXKeyboardController/HyperXAlloyOrigins60and65Controller/RGBController_HyperXAlloyOrigins60and65.cpp +++ b/Controllers/HyperXKeyboardController/HyperXAlloyOrigins60and65Controller/RGBController_HyperXAlloyOrigins60and65.cpp @@ -249,17 +249,6 @@ RGBController_HyperXAlloyOrigins60and65::~RGBController_HyperXAlloyOrigins60and6 keepalive_thread->join(); delete keepalive_thread; - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } @@ -277,11 +266,11 @@ void RGBController_HyperXAlloyOrigins60and65::SetupZones() case ALLOY_ORIGINS_60_LAYOUT: default: led_names = led_names_60; - led_zones.push_back({ZONE_EN_KEYBOARD, ZONE_TYPE_MATRIX, 71, new matrix_map_type{5, 14, (unsigned int *)&matrix_map_60}}); + led_zones.push_back({ZONE_EN_KEYBOARD, ZONE_TYPE_MATRIX, 71, new matrix_map_type(5, 14, false, (unsigned int *)&matrix_map_60)}); break; case ALLOY_ORIGINS_65_LAYOUT: led_names = led_names_65; - led_zones.push_back({ZONE_EN_KEYBOARD, ZONE_TYPE_MATRIX, 77, new matrix_map_type{5, 15, (unsigned int *)&matrix_map_65}}); + led_zones.push_back({ZONE_EN_KEYBOARD, ZONE_TYPE_MATRIX, 77, new matrix_map_type(5, 15, false, (unsigned int *)&matrix_map_65)}); break; } diff --git a/Controllers/HyperXKeyboardController/HyperXAlloyOriginsController/RGBController_HyperXAlloyOrigins.cpp b/Controllers/HyperXKeyboardController/HyperXAlloyOriginsController/RGBController_HyperXAlloyOrigins.cpp index e0a963aa4..7ece69895 100644 --- a/Controllers/HyperXKeyboardController/HyperXAlloyOriginsController/RGBController_HyperXAlloyOrigins.cpp +++ b/Controllers/HyperXKeyboardController/HyperXAlloyOriginsController/RGBController_HyperXAlloyOrigins.cpp @@ -217,17 +217,6 @@ RGBController_HyperXAlloyOrigins::~RGBController_HyperXAlloyOrigins() keepalive_thread->join(); delete keepalive_thread; - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/HyperXKeyboardController/HyperXAlloyOriginsCoreController/RGBController_HyperXAlloyOriginsCore.cpp b/Controllers/HyperXKeyboardController/HyperXAlloyOriginsCoreController/RGBController_HyperXAlloyOriginsCore.cpp index 34f575cf8..6ef30271b 100644 --- a/Controllers/HyperXKeyboardController/HyperXAlloyOriginsCoreController/RGBController_HyperXAlloyOriginsCore.cpp +++ b/Controllers/HyperXKeyboardController/HyperXAlloyOriginsCoreController/RGBController_HyperXAlloyOriginsCore.cpp @@ -132,17 +132,6 @@ RGBController_HyperXAlloyOriginsCore::~RGBController_HyperXAlloyOriginsCore() keepalive_thread->join(); delete keepalive_thread; - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } @@ -187,6 +176,7 @@ void RGBController_HyperXAlloyOriginsCore::SetupZones() new_zone.matrix_map = keyboard_map; keyboard_map->height = new_kb.GetRowCount(); keyboard_map->width = new_kb.GetColumnCount(); + keyboard_map->delete_map = true; keyboard_map->map = new unsigned int[keyboard_map->height * keyboard_map->width]; new_kb.GetKeyMap(keyboard_map->map, KEYBOARD_MAP_FILL_TYPE_COUNT); diff --git a/Controllers/HyperXMicrophoneV2Controller/RGBController_HyperXMicrophoneV2.cpp b/Controllers/HyperXMicrophoneV2Controller/RGBController_HyperXMicrophoneV2.cpp index 528f5bcee..ac437c7d6 100644 --- a/Controllers/HyperXMicrophoneV2Controller/RGBController_HyperXMicrophoneV2.cpp +++ b/Controllers/HyperXMicrophoneV2Controller/RGBController_HyperXMicrophoneV2.cpp @@ -64,15 +64,16 @@ void RGBController_HyperXMicrophoneV2::SetupZones() { zone Mic; - Mic.name = "Microphone"; - Mic.type = ZONE_TYPE_MATRIX; - Mic.leds_min = HYPERX_QUADCAST_2S_TOTAL_LEDS; - Mic.leds_max = HYPERX_QUADCAST_2S_TOTAL_LEDS; - Mic.leds_count = HYPERX_QUADCAST_2S_TOTAL_LEDS; - Mic.matrix_map = new matrix_map_type; - Mic.matrix_map->width = HYPERX_QUADCAST_2S_MATRIX_WIDTH; - Mic.matrix_map->height = HYPERX_QUADCAST_2S_MATRIX_HEIGHT; - Mic.matrix_map->map = new unsigned int[HYPERX_QUADCAST_2S_TOTAL_LEDS]; + Mic.name = "Microphone"; + Mic.type = ZONE_TYPE_MATRIX; + Mic.leds_min = HYPERX_QUADCAST_2S_TOTAL_LEDS; + Mic.leds_max = HYPERX_QUADCAST_2S_TOTAL_LEDS; + Mic.leds_count = HYPERX_QUADCAST_2S_TOTAL_LEDS; + Mic.matrix_map = new matrix_map_type; + Mic.matrix_map->width = HYPERX_QUADCAST_2S_MATRIX_WIDTH; + Mic.matrix_map->height = HYPERX_QUADCAST_2S_MATRIX_HEIGHT; + Mic.matrix_map->delete_map = true; + Mic.matrix_map->map = new unsigned int[HYPERX_QUADCAST_2S_TOTAL_LEDS]; unsigned int led_mapping[HYPERX_QUADCAST_2S_TOTAL_LEDS] = { diff --git a/Controllers/KeychronKeyboardController/RGBController_KeychronKeyboard.cpp b/Controllers/KeychronKeyboardController/RGBController_KeychronKeyboard.cpp index 0bee51efa..06c466dc8 100644 --- a/Controllers/KeychronKeyboardController/RGBController_KeychronKeyboard.cpp +++ b/Controllers/KeychronKeyboardController/RGBController_KeychronKeyboard.cpp @@ -615,14 +615,14 @@ void RGBController_KeychronKeyboard::SetupZones() unsigned int zone_size = 0; zone keyboard_zone; - keyboard_zone.name = ZONE_EN_KEYBOARD; - keyboard_zone.type = ZONE_TYPE_MATRIX; + keyboard_zone.name = ZONE_EN_KEYBOARD; + keyboard_zone.type = ZONE_TYPE_MATRIX; - keyboard_zone.matrix_map = new matrix_map_type; - keyboard_zone.matrix_map->height = keyboard.height; - keyboard_zone.matrix_map->width = keyboard.width; - - keyboard_zone.matrix_map->map = new unsigned int[keyboard.height * keyboard.width]; + keyboard_zone.matrix_map = new matrix_map_type; + keyboard_zone.matrix_map->height = keyboard.height; + keyboard_zone.matrix_map->width = keyboard.width; + keyboard_zone.matrix_map->delete_map = true; + keyboard_zone.matrix_map->map = new unsigned int[keyboard.height * keyboard.width]; for(unsigned int w = 0; w < keyboard.width; w++) { diff --git a/Controllers/LenovoControllers/LenovoUSBController_Gen7_8/RGBController_Lenovo_Gen7_8.cpp b/Controllers/LenovoControllers/LenovoUSBController_Gen7_8/RGBController_Lenovo_Gen7_8.cpp index 5b4fcf5a9..e4029159c 100644 --- a/Controllers/LenovoControllers/LenovoUSBController_Gen7_8/RGBController_Lenovo_Gen7_8.cpp +++ b/Controllers/LenovoControllers/LenovoUSBController_Gen7_8/RGBController_Lenovo_Gen7_8.cpp @@ -339,10 +339,11 @@ void LenovoRGBController_Gen7_8::SetupZones() if(lenovo_zones[i].type == ZONE_TYPE_MATRIX) { - new_zone.matrix_map = new matrix_map_type; - new_zone.matrix_map->height = lenovo_zones[i].height; - new_zone.matrix_map->width = lenovo_zones[i].width; - new_zone.matrix_map->map = new unsigned int[new_zone.matrix_map->height * new_zone.matrix_map->width]; + new_zone.matrix_map = new matrix_map_type; + new_zone.matrix_map->height = lenovo_zones[i].height; + new_zone.matrix_map->width = lenovo_zones[i].width; + new_zone.matrix_map->delete_map = true; + new_zone.matrix_map->map = new unsigned int[new_zone.matrix_map->height * new_zone.matrix_map->width]; if(lenovo_zones[i].matrix_map != NULL) { diff --git a/Controllers/LianLiController/LianLiUniHubALController/RGBController_LianLiUniHubAL.cpp b/Controllers/LianLiController/LianLiUniHubALController/RGBController_LianLiUniHubAL.cpp index 9336e1f8e..683387c83 100644 --- a/Controllers/LianLiController/LianLiUniHubALController/RGBController_LianLiUniHubAL.cpp +++ b/Controllers/LianLiController/LianLiUniHubALController/RGBController_LianLiUniHubAL.cpp @@ -355,17 +355,6 @@ RGBController_LianLiUniHubAL::RGBController_LianLiUniHubAL(LianLiUniHubALControl RGBController_LianLiUniHubAL::~RGBController_LianLiUniHubAL() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/LightSaltController/RGBController_LightSalt.cpp b/Controllers/LightSaltController/RGBController_LightSalt.cpp index b9a760022..43328b112 100644 --- a/Controllers/LightSaltController/RGBController_LightSalt.cpp +++ b/Controllers/LightSaltController/RGBController_LightSalt.cpp @@ -33,17 +33,6 @@ static RGBColor DeflectColor(bool deflection, RGBColor color) RGBController_LightSalt::~RGBController_LightSalt() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != nullptr) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/LogitechController/LogitechG810Controller/RGBController_LogitechG810.cpp b/Controllers/LogitechController/LogitechG810Controller/RGBController_LogitechG810.cpp index ac9597a20..9af9db902 100644 --- a/Controllers/LogitechController/LogitechG810Controller/RGBController_LogitechG810.cpp +++ b/Controllers/LogitechController/LogitechG810Controller/RGBController_LogitechG810.cpp @@ -241,17 +241,6 @@ RGBController_LogitechG810::RGBController_LogitechG810(LogitechG810Controller* c RGBController_LogitechG810::~RGBController_LogitechG810() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/LogitechController/LogitechG815Controller/RGBController_LogitechG815.cpp b/Controllers/LogitechController/LogitechG815Controller/RGBController_LogitechG815.cpp index 90e1852a2..b3dab70f9 100644 --- a/Controllers/LogitechController/LogitechG815Controller/RGBController_LogitechG815.cpp +++ b/Controllers/LogitechController/LogitechG815Controller/RGBController_LogitechG815.cpp @@ -246,17 +246,6 @@ RGBController_LogitechG815::RGBController_LogitechG815(LogitechG815Controller* c RGBController_LogitechG815::~RGBController_LogitechG815() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/LogitechController/LogitechG910Controller/RGBController_LogitechG910.cpp b/Controllers/LogitechController/LogitechG910Controller/RGBController_LogitechG910.cpp index c3e61f973..8fa872841 100644 --- a/Controllers/LogitechController/LogitechG910Controller/RGBController_LogitechG910.cpp +++ b/Controllers/LogitechController/LogitechG910Controller/RGBController_LogitechG910.cpp @@ -242,17 +242,6 @@ RGBController_LogitechG910::RGBController_LogitechG910(LogitechG910Controller* c RGBController_LogitechG910::~RGBController_LogitechG910() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/LogitechController/LogitechG915Controller/RGBController_LogitechG915.cpp b/Controllers/LogitechController/LogitechG915Controller/RGBController_LogitechG915.cpp index 07e3c36c3..16923b696 100644 --- a/Controllers/LogitechController/LogitechG915Controller/RGBController_LogitechG915.cpp +++ b/Controllers/LogitechController/LogitechG915Controller/RGBController_LogitechG915.cpp @@ -381,17 +381,6 @@ RGBController_LogitechG915::RGBController_LogitechG915(LogitechG915Controller* c RGBController_LogitechG915::~RGBController_LogitechG915() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/LogitechController/LogitechGProKeyboardController/RGBController_LogitechGProKeyboard.cpp b/Controllers/LogitechController/LogitechGProKeyboardController/RGBController_LogitechGProKeyboard.cpp index ce8b8768e..01ae94ec7 100644 --- a/Controllers/LogitechController/LogitechGProKeyboardController/RGBController_LogitechGProKeyboard.cpp +++ b/Controllers/LogitechController/LogitechGProKeyboardController/RGBController_LogitechGProKeyboard.cpp @@ -218,17 +218,6 @@ RGBController_LogitechGProKeyboard::RGBController_LogitechGProKeyboard(LogitechG RGBController_LogitechGProKeyboard::~RGBController_LogitechGProKeyboard() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/MNTKeyboardController/RGBController_MNTKeyboard.cpp b/Controllers/MNTKeyboardController/RGBController_MNTKeyboard.cpp index 4095350bc..554123f0f 100644 --- a/Controllers/MNTKeyboardController/RGBController_MNTKeyboard.cpp +++ b/Controllers/MNTKeyboardController/RGBController_MNTKeyboard.cpp @@ -27,7 +27,6 @@ void RGBController_MNTKeyboard::CommonInit() RGBController_MNTKeyboard::~RGBController_MNTKeyboard() { - delete zones[0].matrix_map; delete controller; } diff --git a/Controllers/MintakaKeyboardController/RGBController_MintakaKeyboard.cpp b/Controllers/MintakaKeyboardController/RGBController_MintakaKeyboard.cpp index d19db34e3..498b5d6f0 100644 --- a/Controllers/MintakaKeyboardController/RGBController_MintakaKeyboard.cpp +++ b/Controllers/MintakaKeyboardController/RGBController_MintakaKeyboard.cpp @@ -255,20 +255,20 @@ void RGBController_MintakaKeyboard::SetupZones() | Create the keyboard zone usiung Keyboard Layout Manager | \*---------------------------------------------------------*/ zone new_zone; - new_zone.name = ZONE_EN_KEYBOARD; - new_zone.type = ZONE_TYPE_MATRIX; + new_zone.name = ZONE_EN_KEYBOARD; + new_zone.type = ZONE_TYPE_MATRIX; KeyboardLayoutManager new_kb(KEYBOARD_LAYOUT_ISO_QWERTY, KEYBOARD_SIZE_SIXTY, mintaka_offset_values); - matrix_map_type * new_map = new matrix_map_type; - new_zone.matrix_map = new_map; - new_zone.matrix_map->height = new_kb.GetRowCount(); - new_zone.matrix_map->width = new_kb.GetColumnCount(); - - new_zone.matrix_map->map = new unsigned int[new_map->height * new_map->width]; - new_zone.leds_count = new_kb.GetKeyCount(); - new_zone.leds_min = new_zone.leds_count; - new_zone.leds_max = new_zone.leds_count; + matrix_map_type * new_map = new matrix_map_type; + new_zone.matrix_map = new_map; + new_zone.matrix_map->height = new_kb.GetRowCount(); + new_zone.matrix_map->width = new_kb.GetColumnCount(); + new_zone.matrix_map->delete_map = true; + new_zone.matrix_map->map = new unsigned int[new_map->height * new_map->width]; + new_zone.leds_count = new_kb.GetKeyCount(); + new_zone.leds_min = new_zone.leds_count; + new_zone.leds_max = new_zone.leds_count; /*---------------------------------------------------------*\ | Matrix map still uses declared zone rows and columns | diff --git a/Controllers/MountainKeyboardController/RGBController_MountainKeyboard.cpp b/Controllers/MountainKeyboardController/RGBController_MountainKeyboard.cpp index 62eb78078..539b07ccd 100644 --- a/Controllers/MountainKeyboardController/RGBController_MountainKeyboard.cpp +++ b/Controllers/MountainKeyboardController/RGBController_MountainKeyboard.cpp @@ -685,17 +685,6 @@ RGBController_MountainKeyboard::RGBController_MountainKeyboard(MountainKeyboardC RGBController_MountainKeyboard::~RGBController_MountainKeyboard() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/OKSController/RGBController_OKSKeyboard.cpp b/Controllers/OKSController/RGBController_OKSKeyboard.cpp index cfe84de6f..512fe6c1c 100644 --- a/Controllers/OKSController/RGBController_OKSKeyboard.cpp +++ b/Controllers/OKSController/RGBController_OKSKeyboard.cpp @@ -158,17 +158,6 @@ RGBController_OKSKeyboard::RGBController_OKSKeyboard(OKSKeyboardController* cont RGBController_OKSKeyboard::~RGBController_OKSKeyboard() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRev9Controller/RGBController_QMKOpenRGBRev9.cpp b/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRev9Controller/RGBController_QMKOpenRGBRev9.cpp index 2be114314..10f975ba3 100644 --- a/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRev9Controller/RGBController_QMKOpenRGBRev9.cpp +++ b/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRev9Controller/RGBController_QMKOpenRGBRev9.cpp @@ -257,13 +257,7 @@ RGBController_QMKOpenRGBRev9::RGBController_QMKOpenRGBRev9(QMKOpenRGBRev9Control RGBController_QMKOpenRGBRev9::~RGBController_QMKOpenRGBRev9() { - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } + delete controller; } void RGBController_QMKOpenRGBRev9::SetupZones() diff --git a/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRevBController/RGBController_QMKOpenRGBRevB.cpp b/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRevBController/RGBController_QMKOpenRGBRevB.cpp index 5a1a6044c..ffe855e81 100644 --- a/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRevBController/RGBController_QMKOpenRGBRevB.cpp +++ b/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRevBController/RGBController_QMKOpenRGBRevB.cpp @@ -259,13 +259,7 @@ RGBController_QMKOpenRGBRevB::RGBController_QMKOpenRGBRevB(QMKOpenRGBRevBControl RGBController_QMKOpenRGBRevB::~RGBController_QMKOpenRGBRevB() { - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } + delete controller; } void RGBController_QMKOpenRGBRevB::SetupZones() diff --git a/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRevDController/RGBController_QMKOpenRGBRevD.cpp b/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRevDController/RGBController_QMKOpenRGBRevD.cpp index b2ca0ac98..27fd9b9ad 100644 --- a/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRevDController/RGBController_QMKOpenRGBRevD.cpp +++ b/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRevDController/RGBController_QMKOpenRGBRevD.cpp @@ -258,13 +258,7 @@ RGBController_QMKOpenRGBRevD::RGBController_QMKOpenRGBRevD(QMKOpenRGBRevDControl RGBController_QMKOpenRGBRevD::~RGBController_QMKOpenRGBRevD() { - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } + delete controller; } void RGBController_QMKOpenRGBRevD::SetupZones() diff --git a/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRevEController/RGBController_QMKOpenRGBRevE.cpp b/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRevEController/RGBController_QMKOpenRGBRevE.cpp index a909a5bc9..7d0af8271 100644 --- a/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRevEController/RGBController_QMKOpenRGBRevE.cpp +++ b/Controllers/QMKController/QMKOpenRGBController/QMKOpenRGBRevEController/RGBController_QMKOpenRGBRevE.cpp @@ -274,13 +274,7 @@ RGBController_QMKOpenRGBRevE::RGBController_QMKOpenRGBRevE(QMKOpenRGBRevDControl RGBController_QMKOpenRGBRevE::~RGBController_QMKOpenRGBRevE() { - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } + delete controller; } void RGBController_QMKOpenRGBRevE::SetupZones() diff --git a/Controllers/QMKController/QMKVialRGBController/RGBController_QMKVialRGB.cpp b/Controllers/QMKController/QMKVialRGBController/RGBController_QMKVialRGB.cpp index 83925178c..d3958b85f 100644 --- a/Controllers/QMKController/QMKVialRGBController/RGBController_QMKVialRGB.cpp +++ b/Controllers/QMKController/QMKVialRGBController/RGBController_QMKVialRGB.cpp @@ -194,15 +194,16 @@ void RGBController_QMKVialRGB::SetupZones() \*-----------------------------------------------------*/ zone keyboard; - keyboard.name = "Keyboard"; - keyboard.type = ZONE_TYPE_MATRIX; - keyboard.leds_min = controller->GetLEDCount(); - keyboard.leds_max = controller->GetLEDCount(); - keyboard.leds_count = controller->GetLEDCount(); - keyboard.matrix_map = new matrix_map_type; - keyboard.matrix_map->height = height; - keyboard.matrix_map->width = width; - keyboard.matrix_map->map = matrix_map; + keyboard.name = "Keyboard"; + keyboard.type = ZONE_TYPE_MATRIX; + keyboard.leds_min = controller->GetLEDCount(); + keyboard.leds_max = controller->GetLEDCount(); + keyboard.leds_count = controller->GetLEDCount(); + keyboard.matrix_map = new matrix_map_type; + keyboard.matrix_map->height = height; + keyboard.matrix_map->width = width; + keyboard.matrix_map->delete_map = true; + keyboard.matrix_map->map = matrix_map; zones.push_back(keyboard); diff --git a/Controllers/RazerController/RazerController/RGBController_Razer.cpp b/Controllers/RazerController/RazerController/RGBController_Razer.cpp index b1278bb54..572088d3f 100644 --- a/Controllers/RazerController/RazerController/RGBController_Razer.cpp +++ b/Controllers/RazerController/RazerController/RGBController_Razer.cpp @@ -210,6 +210,7 @@ void RGBController_Razer::SetupZones() new_zone.matrix_map = new_map; new_map->height = device_list[device_index]->zones[zone_id]->rows; new_map->width = device_list[device_index]->zones[zone_id]->cols; + new_map->delete_map = true; new_map->map = new unsigned int[new_map->height * new_map->width]; if(device_list[device_index]->layout->base_size != KEYBOARD_SIZE::KEYBOARD_SIZE_EMPTY) @@ -259,6 +260,7 @@ void RGBController_Razer::SetupZones() new_zone.matrix_map = new_map; new_map->height = device_list[device_index]->zones[zone_id]->rows; new_map->width = device_list[device_index]->zones[zone_id]->cols; + new_map->delete_map = true; new_map->map = new unsigned int[new_map->height * new_map->width]; for(unsigned int y = 0; y < new_map->height; y++) diff --git a/Controllers/RazerController/RazerController/RGBController_RazerAddressable.cpp b/Controllers/RazerController/RazerController/RGBController_RazerAddressable.cpp index 32fcf6f08..a6b5c2648 100644 --- a/Controllers/RazerController/RazerController/RGBController_RazerAddressable.cpp +++ b/Controllers/RazerController/RazerController/RGBController_RazerAddressable.cpp @@ -187,7 +187,7 @@ void RGBController_RazerAddressable::SetupZones() new_map->height = device_list[device_index]->zones[zone_id]->rows; new_map->width = device_list[device_index]->zones[zone_id]->cols; - + new_map->delete_map = true; new_map->map = new unsigned int[new_map->height * new_map->width]; for(unsigned int y = 0; y < new_map->height; y++) diff --git a/Controllers/RazerController/RazerHanboController/RGBController_RazerHanbo.cpp b/Controllers/RazerController/RazerHanboController/RGBController_RazerHanbo.cpp index 22cc87384..e87373d90 100644 --- a/Controllers/RazerController/RazerHanboController/RGBController_RazerHanbo.cpp +++ b/Controllers/RazerController/RazerHanboController/RGBController_RazerHanbo.cpp @@ -94,6 +94,7 @@ void RGBController_RazerHanbo::SetupZones() new_zone.matrix_map = new_map; new_map->height = device_list[device_index]->zones[zone_id]->rows; new_map->width = device_list[device_index]->zones[zone_id]->cols; + new_map->delete_map = true; new_map->map = new unsigned int[new_map->height * new_map->width]; for(unsigned int y = 0; y < new_map->height; y++) diff --git a/Controllers/RazerController/RazerKrakenController/RGBController_RazerKraken.cpp b/Controllers/RazerController/RazerKrakenController/RGBController_RazerKraken.cpp index b66f13a96..db423d07f 100644 --- a/Controllers/RazerController/RazerKrakenController/RGBController_RazerKraken.cpp +++ b/Controllers/RazerController/RazerKrakenController/RGBController_RazerKraken.cpp @@ -119,10 +119,10 @@ void RGBController_RazerKraken::SetupZones() matrix_map_type * new_map = new matrix_map_type; new_zone.matrix_map = new_map; - new_map->height = device_list[device_index]->zones[zone_id]->rows; - new_map->width = device_list[device_index]->zones[zone_id]->cols; - - new_map->map = new unsigned int[new_map->height * new_map->width]; + new_map->height = device_list[device_index]->zones[zone_id]->rows; + new_map->width = device_list[device_index]->zones[zone_id]->cols; + new_map->delete_map = true; + new_map->map = new unsigned int[new_map->height * new_map->width]; for(unsigned int y = 0; y < new_map->height; y++) { diff --git a/Controllers/RazerController/RazerKrakenV3Controller/RGBController_RazerKrakenV3.cpp b/Controllers/RazerController/RazerKrakenV3Controller/RGBController_RazerKrakenV3.cpp index 59fb11604..13fbf326c 100644 --- a/Controllers/RazerController/RazerKrakenV3Controller/RGBController_RazerKrakenV3.cpp +++ b/Controllers/RazerController/RazerKrakenV3Controller/RGBController_RazerKrakenV3.cpp @@ -98,10 +98,10 @@ void RGBController_RazerKrakenV3::SetupZones() matrix_map_type * new_map = new matrix_map_type; new_zone.matrix_map = new_map; - new_map->height = device_list[device_index]->zones[zone_id]->rows; - new_map->width = device_list[device_index]->zones[zone_id]->cols; - - new_map->map = new unsigned int[new_map->height * new_map->width]; + new_map->height = device_list[device_index]->zones[zone_id]->rows; + new_map->width = device_list[device_index]->zones[zone_id]->cols; + new_map->delete_map = true; + new_map->map = new unsigned int[new_map->height * new_map->width]; for(unsigned int y = 0; y < new_map->height; y++) { diff --git a/Controllers/RedSquareKeyroxController/RedSquareKeyroxController/RGBController_RedSquareKeyrox.cpp b/Controllers/RedSquareKeyroxController/RedSquareKeyroxController/RGBController_RedSquareKeyrox.cpp index a8643cceb..a83125a25 100644 --- a/Controllers/RedSquareKeyroxController/RedSquareKeyroxController/RGBController_RedSquareKeyrox.cpp +++ b/Controllers/RedSquareKeyroxController/RedSquareKeyroxController/RGBController_RedSquareKeyrox.cpp @@ -312,14 +312,14 @@ void RGBController_RedSquareKeyrox::SetupZones() unsigned int zone_size = 0; zone z; - z.name = ZONE_EN_KEYBOARD; - z.type = ZONE_TYPE_MATRIX; + z.name = ZONE_EN_KEYBOARD; + z.type = ZONE_TYPE_MATRIX; - z.matrix_map = new matrix_map_type; - z.matrix_map->height = keyboard->height; - z.matrix_map->width = keyboard->width; - - z.matrix_map->map = new unsigned int[keyboard->height * keyboard->width]; + z.matrix_map = new matrix_map_type; + z.matrix_map->height = keyboard->height; + z.matrix_map->width = keyboard->width; + z.matrix_map->delete_map = true; + z.matrix_map->map = new unsigned int[keyboard->height * keyboard->width]; for(unsigned int h = 0; h < keyboard->height; h++) { diff --git a/Controllers/RedSquareKeyroxController/RedSquareKeyroxTKLClassicController/RGBController_RedSquareKeyroxTKLClassic.cpp b/Controllers/RedSquareKeyroxController/RedSquareKeyroxTKLClassicController/RGBController_RedSquareKeyroxTKLClassic.cpp index 5627621fa..7aa9defd8 100644 --- a/Controllers/RedSquareKeyroxController/RedSquareKeyroxTKLClassicController/RGBController_RedSquareKeyroxTKLClassic.cpp +++ b/Controllers/RedSquareKeyroxController/RedSquareKeyroxTKLClassicController/RGBController_RedSquareKeyroxTKLClassic.cpp @@ -205,20 +205,20 @@ void RGBController_RedSquareKeyroxTKLClassic::SetupZones() | Create the keyboard zone usiung Keyboard Layout Manager | \*---------------------------------------------------------*/ zone new_zone; - new_zone.name = ZONE_EN_KEYBOARD; - new_zone.type = ZONE_TYPE_MATRIX; + new_zone.name = ZONE_EN_KEYBOARD; + new_zone.type = ZONE_TYPE_MATRIX; KeyboardLayoutManager new_kb(KEYBOARD_LAYOUT_ANSI_QWERTY, KEYBOARD_SIZE_TKL, keyrox_tkl_offset_values); - matrix_map_type * new_map = new matrix_map_type; - new_zone.matrix_map = new_map; - new_zone.matrix_map->height = KEYROX_TKL_CLASSIC_HEIGHT; - new_zone.matrix_map->width = KEYROX_TKL_CLASSIC_WIDTH; - - new_zone.matrix_map->map = new unsigned int[new_map->height * new_map->width]; - new_zone.leds_count = new_kb.GetKeyCount(); - new_zone.leds_min = new_zone.leds_count; - new_zone.leds_max = new_zone.leds_count; + matrix_map_type * new_map = new matrix_map_type; + new_zone.matrix_map = new_map; + new_zone.matrix_map->height = KEYROX_TKL_CLASSIC_HEIGHT; + new_zone.matrix_map->width = KEYROX_TKL_CLASSIC_WIDTH; + new_zone.matrix_map->delete_map = true; + new_zone.matrix_map->map = new unsigned int[new_map->height * new_map->width]; + new_zone.leds_count = new_kb.GetKeyCount(); + new_zone.leds_min = new_zone.leds_count; + new_zone.leds_max = new_zone.leds_count; /*---------------------------------------------------------*\ | Matrix map still uses declared zone rows and columns | diff --git a/Controllers/SinowealthController/SinowealthKeyboard10cController/RGBController_SinowealthKeyboard10c.cpp b/Controllers/SinowealthController/SinowealthKeyboard10cController/RGBController_SinowealthKeyboard10c.cpp index c6d3fd01e..4fef000e3 100644 --- a/Controllers/SinowealthController/SinowealthKeyboard10cController/RGBController_SinowealthKeyboard10c.cpp +++ b/Controllers/SinowealthController/SinowealthKeyboard10cController/RGBController_SinowealthKeyboard10c.cpp @@ -92,15 +92,15 @@ void RGBController_SinowealthKeyboard10c::SetupZones() device.keyboard_layout.key_values); new_kb.ChangeKeys(device.keyboard_layout.edit_keys); - matrix_map_type* new_map = new matrix_map_type; - new_zone.matrix_map = new_map; - new_zone.matrix_map->height = new_kb.GetRowCount(); - new_zone.matrix_map->width = new_kb.GetColumnCount(); - - new_zone.matrix_map->map = new unsigned int[new_map->height * new_map->width]; - new_zone.leds_count = new_kb.GetRowCount() * new_kb.GetColumnCount(); - new_zone.leds_min = new_zone.leds_count; - new_zone.leds_max = new_zone.leds_count; + matrix_map_type* new_map = new matrix_map_type; + new_zone.matrix_map = new_map; + new_zone.matrix_map->height = new_kb.GetRowCount(); + new_zone.matrix_map->width = new_kb.GetColumnCount(); + new_zone.matrix_map->delete_map = true; + new_zone.matrix_map->map = new unsigned int[new_map->height * new_map->width]; + new_zone.leds_count = new_kb.GetRowCount() * new_kb.GetColumnCount(); + new_zone.leds_min = new_zone.leds_count; + new_zone.leds_max = new_zone.leds_count; /*---------------------------------------------------------*\ | These keyboards use sparse LED indexes — for example, a | diff --git a/Controllers/SinowealthController/SinowealthKeyboard90Controller/RGBController_SinowealthKeyboard90.cpp b/Controllers/SinowealthController/SinowealthKeyboard90Controller/RGBController_SinowealthKeyboard90.cpp index 1a130f6c5..1bd59d4cf 100644 --- a/Controllers/SinowealthController/SinowealthKeyboard90Controller/RGBController_SinowealthKeyboard90.cpp +++ b/Controllers/SinowealthController/SinowealthKeyboard90Controller/RGBController_SinowealthKeyboard90.cpp @@ -79,17 +79,6 @@ RGBController_SinowealthKeyboard90::RGBController_SinowealthKeyboard90(Sinowealt RGBController_SinowealthKeyboard90::~RGBController_SinowealthKeyboard90() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/SkyloongController/RGBController_SkyloongGK104Pro.cpp b/Controllers/SkyloongController/RGBController_SkyloongGK104Pro.cpp index ff8bf407b..826f48275 100644 --- a/Controllers/SkyloongController/RGBController_SkyloongGK104Pro.cpp +++ b/Controllers/SkyloongController/RGBController_SkyloongGK104Pro.cpp @@ -99,15 +99,15 @@ void RGBController_SkyloongGK104Pro::SetupZones() } ); - matrix_map_type * new_map = new matrix_map_type; - new_zone.matrix_map = new_map; - new_zone.matrix_map->height = new_kb.GetRowCount(); - new_zone.matrix_map->width = new_kb.GetColumnCount(); - - new_zone.matrix_map->map = new unsigned int[new_map->height * new_map->width]; - new_zone.leds_count = new_kb.GetKeyCount(); - new_zone.leds_min = new_zone.leds_count; - new_zone.leds_max = new_zone.leds_count; + matrix_map_type * new_map = new matrix_map_type; + new_zone.matrix_map = new_map; + new_zone.matrix_map->height = new_kb.GetRowCount(); + new_zone.matrix_map->width = new_kb.GetColumnCount(); + new_zone.matrix_map->delete_map = true; + new_zone.matrix_map->map = new unsigned int[new_map->height * new_map->width]; + new_zone.leds_count = new_kb.GetKeyCount(); + new_zone.leds_min = new_zone.leds_count; + new_zone.leds_max = new_zone.leds_count; /*---------------------------------------------------------*\ | Matrix map still uses declared zone rows and columns | diff --git a/Controllers/SteelSeriesController/SteelSeriesApexController/RGBController_SteelSeriesApex.cpp b/Controllers/SteelSeriesController/SteelSeriesApexController/RGBController_SteelSeriesApex.cpp index f5eb6569e..9b191174a 100644 --- a/Controllers/SteelSeriesController/SteelSeriesApexController/RGBController_SteelSeriesApex.cpp +++ b/Controllers/SteelSeriesController/SteelSeriesApexController/RGBController_SteelSeriesApex.cpp @@ -65,18 +65,6 @@ RGBController_SteelSeriesApex::RGBController_SteelSeriesApex(SteelSeriesApexBase RGBController_SteelSeriesApex::~RGBController_SteelSeriesApex() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - free(zones[zone_index].matrix_map->map); - delete zones[zone_index].matrix_map; - } - } - delete controller; } @@ -103,8 +91,11 @@ void RGBController_SteelSeriesApex::SetupZones() if(zone_types[zone_idx] == ZONE_TYPE_MATRIX) { - new_zone.matrix_map = new matrix_map_type; - new_zone.matrix_map->map = (unsigned int *) malloc(matrix_mapsize*sizeof(unsigned int)); + new_zone.matrix_map = new matrix_map_type; + new_zone.matrix_map->height = MATRIX_HEIGHT; + new_zone.matrix_map->width = MATRIX_WIDTH; + new_zone.matrix_map->delete_map = true; + new_zone.matrix_map->map = new unsigned int[matrix_mapsize * sizeof(unsigned int)]; if((proto_type == APEX) || (proto_type == APEX_M) || (proto_type == APEX_9_TKL) || (proto_type == APEX_9_MINI)) { diff --git a/Controllers/SteelSeriesController/SteelSeriesApexRegions.h b/Controllers/SteelSeriesController/SteelSeriesApexRegions.h index cb65ba8b3..b84c67034 100644 --- a/Controllers/SteelSeriesController/SteelSeriesApexRegions.h +++ b/Controllers/SteelSeriesController/SteelSeriesApexRegions.h @@ -438,8 +438,6 @@ static void SetSkuRegion (matrix_map_type& input, std::string& sku) { std::map::const_iterator it = patch_lookup.find(sku); unsigned int local_matrix [MATRIX_HEIGHT][MATRIX_WIDTH] = MATRIX_MAP_ANSI; - input.height = MATRIX_HEIGHT; - input.width = MATRIX_WIDTH; if(it != patch_lookup.end()) { diff --git a/Controllers/StreamDeckController/RGBController_ElgatoStreamDeck.cpp b/Controllers/StreamDeckController/RGBController_ElgatoStreamDeck.cpp index ba9db05e6..44e95ad66 100644 --- a/Controllers/StreamDeckController/RGBController_ElgatoStreamDeck.cpp +++ b/Controllers/StreamDeckController/RGBController_ElgatoStreamDeck.cpp @@ -57,6 +57,7 @@ void RGBController_ElgatoStreamDeck::SetupZones() deck_zone.matrix_map = new matrix_map_type; deck_zone.matrix_map->height = 3; deck_zone.matrix_map->width = 5; + deck_zone.matrix_map->delete_map = true; deck_zone.matrix_map->map = new unsigned int[15]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; zones.push_back(deck_zone); diff --git a/Controllers/ThermaltakePoseidonZRGBController/RGBController_ThermaltakePoseidonZRGB.cpp b/Controllers/ThermaltakePoseidonZRGBController/RGBController_ThermaltakePoseidonZRGB.cpp index a43a1956f..783b2301d 100644 --- a/Controllers/ThermaltakePoseidonZRGBController/RGBController_ThermaltakePoseidonZRGB.cpp +++ b/Controllers/ThermaltakePoseidonZRGBController/RGBController_ThermaltakePoseidonZRGB.cpp @@ -212,17 +212,6 @@ RGBController_PoseidonZRGB::RGBController_PoseidonZRGB(PoseidonZRGBController* c RGBController_PoseidonZRGB::~RGBController_PoseidonZRGB() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/Controllers/ValkyrieKeyboardController/RGBController_ValkyrieKeyboard.cpp b/Controllers/ValkyrieKeyboardController/RGBController_ValkyrieKeyboard.cpp index 9e9a6ff95..dcc841aae 100644 --- a/Controllers/ValkyrieKeyboardController/RGBController_ValkyrieKeyboard.cpp +++ b/Controllers/ValkyrieKeyboardController/RGBController_ValkyrieKeyboard.cpp @@ -293,18 +293,6 @@ RGBController_ValkyrieKeyboard::RGBController_ValkyrieKeyboard(ValkyrieKeyboardC RGBController_ValkyrieKeyboard::~RGBController_ValkyrieKeyboard() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - break; - } - delete controller; } diff --git a/Controllers/WinbondGamingKeyboardController/RGBController_WinbondGamingKeyboard.cpp b/Controllers/WinbondGamingKeyboardController/RGBController_WinbondGamingKeyboard.cpp index 0eb173ce8..0948a0e37 100644 --- a/Controllers/WinbondGamingKeyboardController/RGBController_WinbondGamingKeyboard.cpp +++ b/Controllers/WinbondGamingKeyboardController/RGBController_WinbondGamingKeyboard.cpp @@ -763,15 +763,15 @@ void RGBController_WinbondGamingKeyboard::SetupZones() KeyboardLayoutManager new_kb(controller->GetLayout(), kb_size, *layouts); - matrix_map_type * new_map = new matrix_map_type; - new_zone.matrix_map = new_map; - new_zone.matrix_map->height = new_kb.GetRowCount(); - new_zone.matrix_map->width = new_kb.GetColumnCount(); - - new_zone.matrix_map->map = new unsigned int[new_map->height * new_map->width]; - new_zone.leds_count = new_kb.GetKeyCount(); - new_zone.leds_min = new_zone.leds_count; - new_zone.leds_max = new_zone.leds_count; + matrix_map_type * new_map = new matrix_map_type; + new_zone.matrix_map = new_map; + new_zone.matrix_map->height = new_kb.GetRowCount(); + new_zone.matrix_map->width = new_kb.GetColumnCount(); + new_zone.matrix_map->delete_map = true; + new_zone.matrix_map->map = new unsigned int[new_map->height * new_map->width]; + new_zone.leds_count = new_kb.GetKeyCount(); + new_zone.leds_min = new_zone.leds_count; + new_zone.leds_max = new_zone.leds_count; /*---------------------------------------------------------*\ | Matrix map still uses declared zone rows and columns | diff --git a/Controllers/WootingKeyboardController/RGBController_WootingKeyboard.cpp b/Controllers/WootingKeyboardController/RGBController_WootingKeyboard.cpp index 20d8871cc..dc0a3605d 100644 --- a/Controllers/WootingKeyboardController/RGBController_WootingKeyboard.cpp +++ b/Controllers/WootingKeyboardController/RGBController_WootingKeyboard.cpp @@ -635,17 +635,6 @@ RGBController_WootingKeyboard::RGBController_WootingKeyboard(WootingKeyboardCont RGBController_WootingKeyboard::~RGBController_WootingKeyboard() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for (unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if (zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } @@ -736,6 +725,7 @@ void RGBController_WootingKeyboard::SetupZones() new_zone.matrix_map = new matrix_map_type; new_zone.matrix_map->height = (unsigned int)matrix_rows; new_zone.matrix_map->width = (unsigned int)matrix_columns; + new_zone.matrix_map->delete_map = true; new_zone.matrix_map->map = new_matrix; zones.push_back(new_zone); diff --git a/Controllers/XPGSummonerKeyboardController/RGBController_XPGSummoner.cpp b/Controllers/XPGSummonerKeyboardController/RGBController_XPGSummoner.cpp index bf3b99e26..ff5c296c5 100644 --- a/Controllers/XPGSummonerKeyboardController/RGBController_XPGSummoner.cpp +++ b/Controllers/XPGSummonerKeyboardController/RGBController_XPGSummoner.cpp @@ -239,13 +239,6 @@ RGBController_XPGSummoner::RGBController_XPGSummoner(XPGSummonerController *cont \*---------------------------------------------------------*/ RGBController_XPGSummoner::~RGBController_XPGSummoner() { - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].matrix_map != NULL) - { - delete zones[zone_index].matrix_map; - } - } delete controller; } diff --git a/Controllers/ZETKeyboardController/RGBController_ZETBladeOptical.cpp b/Controllers/ZETKeyboardController/RGBController_ZETBladeOptical.cpp index fdf368820..9f00caa3a 100644 --- a/Controllers/ZETKeyboardController/RGBController_ZETBladeOptical.cpp +++ b/Controllers/ZETKeyboardController/RGBController_ZETBladeOptical.cpp @@ -432,17 +432,6 @@ RGBController_ZETBladeOptical::RGBController_ZETBladeOptical(ZETBladeOpticalCont RGBController_ZETBladeOptical::~RGBController_ZETBladeOptical() { - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for (unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if (zones[zone_index].matrix_map != nullptr) - { - delete zones[zone_index].matrix_map; - } - } - delete controller; } diff --git a/RGBController/RGBController.cpp b/RGBController/RGBController.cpp index 116abb743..e4a98bea6 100644 --- a/RGBController/RGBController.cpp +++ b/RGBController/RGBController.cpp @@ -16,6 +16,27 @@ using namespace std::chrono_literals; +matrix_map_type::matrix_map_type() +{ + matrix_map_type(0, 0, false, NULL); +} + +matrix_map_type::matrix_map_type(unsigned int height, unsigned int width, bool delete_map, unsigned int * map) +{ + this->height = height; + this->width = width; + this->delete_map = delete_map; + this->map = map; +} + +matrix_map_type::~matrix_map_type() +{ + if(delete_map && map != NULL) + { + delete[] map; + } +} + mode::mode() { /*-----------------------------------------------------*\ @@ -55,7 +76,11 @@ segment::segment() segment::~segment() { - + if(matrix_map != NULL) + { + delete matrix_map; + matrix_map = NULL; + } } zone::zone() @@ -78,6 +103,12 @@ zone::zone() zone::~zone() { + if(matrix_map != NULL) + { + delete matrix_map; + matrix_map = NULL; + } + segments.clear(); } @@ -2783,6 +2814,15 @@ unsigned char* RGBController::SetSegmentDescription(unsigned char* data_ptr, seg \*-------------------------------------------------*/ if(matrix_map_len > 0) { + /*---------------------------------------------*\ + | Delete any existing matrix map | + \*---------------------------------------------*/ + if(segment->matrix_map != NULL) + { + delete segment->matrix_map; + segment->matrix_map = NULL; + } + /*---------------------------------------------*\ | Create a map data structure to fill in | \*---------------------------------------------*/ @@ -2817,10 +2857,20 @@ unsigned char* RGBController::SetMatrixMapDescription(unsigned char* data_ptr, m memcpy(&matrix_map->width, data_ptr, sizeof(matrix_map->width)); data_ptr += sizeof(matrix_map->width); + /*-----------------------------------------------------*\ + | Delete existing map if it exists and is deletable | + \*-----------------------------------------------------*/ + if(matrix_map->delete_map && matrix_map->map != NULL) + { + delete[] matrix_map->map; + matrix_map->map = NULL; + } + /*-----------------------------------------------------*\ | Copy in matrix map | \*-----------------------------------------------------*/ - matrix_map->map = new unsigned int[matrix_map->height * matrix_map->width]; + matrix_map->map = new unsigned int[matrix_map->height * matrix_map->width]; + matrix_map->delete_map = true; for(unsigned int matrix_idx = 0; matrix_idx < (matrix_map->height * matrix_map->width); matrix_idx++) { @@ -2879,6 +2929,15 @@ unsigned char* RGBController::SetZoneDescription(unsigned char* data_ptr, zone* \*-----------------------------------------------------*/ if(matrix_map_len > 0) { + /*-------------------------------------------------*\ + | Delete any existing matrix map | + \*-------------------------------------------------*/ + if(zone->matrix_map != NULL) + { + delete zone->matrix_map; + zone->matrix_map = NULL; + } + /*-------------------------------------------------*\ | Create a map data structure to fill in | \*-------------------------------------------------*/ diff --git a/RGBController/RGBController.h b/RGBController/RGBController.h index 1252b91b7..419ce21ac 100644 --- a/RGBController/RGBController.h +++ b/RGBController/RGBController.h @@ -154,12 +154,18 @@ enum /*---------------------------------------------------------*\ | Matrix Map Struct | \*---------------------------------------------------------*/ -typedef struct +class matrix_map_type { +public: unsigned int height; unsigned int width; + bool delete_map; /* whether to delete[] map when matrix_map_type is deleted */ unsigned int * map; -} matrix_map_type; + + matrix_map_type(); + matrix_map_type(unsigned int height, unsigned int width, bool delete_map, unsigned int * map); + ~matrix_map_type(); +}; /*---------------------------------------------------------*\ | Segment Class |