display backlight and bluetooth reference counting (#639)

This commit is contained in:
Ken Van Hoeylandt
2026-08-29 23:37:31 +02:00
committed by GitHub
parent 19b11eb9a8
commit 64fb1a9f52
16 changed files with 80 additions and 33 deletions
@@ -10,10 +10,11 @@ const struct DeviceType BLUETOOTH_HID_DEVICE_TYPE = {
.name = "bluetooth-hid-device",
};
struct Device* bluetooth_hid_device_get_device() {
struct Device* bluetooth_hid_device_get() {
struct Device* found = nullptr;
device_for_each_of_type(&BLUETOOTH_HID_DEVICE_TYPE, &found, [](struct Device* dev, void* ctx) -> bool {
if (device_is_ready(dev)) {
// device_get() while still inside the ledger-locked callback, same as device_get_by_name().
if (device_is_ready(dev) && device_get(dev) == ERROR_NONE) {
*static_cast<struct Device**>(ctx) = dev;
return false;
}
@@ -10,10 +10,11 @@ const struct DeviceType BLUETOOTH_MIDI_TYPE = {
.name = "bluetooth-midi",
};
struct Device* bluetooth_midi_get_device() {
struct Device* bluetooth_midi_get() {
struct Device* found = nullptr;
device_for_each_of_type(&BLUETOOTH_MIDI_TYPE, &found, [](struct Device* dev, void* ctx) -> bool {
if (device_is_ready(dev)) {
// device_get() while still inside the ledger-locked callback, same as device_get_by_name().
if (device_is_ready(dev) && device_get(dev) == ERROR_NONE) {
*static_cast<struct Device**>(ctx) = dev;
return false;
}
@@ -10,10 +10,11 @@ const struct DeviceType BLUETOOTH_SERIAL_TYPE = {
.name = "bluetooth-serial",
};
struct Device* bluetooth_serial_get_device() {
struct Device* bluetooth_serial_get() {
struct Device* found = nullptr;
device_for_each_of_type(&BLUETOOTH_SERIAL_TYPE, &found, [](struct Device* dev, void* ctx) -> bool {
if (device_is_ready(dev)) {
// device_get() while still inside the ledger-locked callback, same as device_get_by_name().
if (device_is_ready(dev) && device_get(dev) == ERROR_NONE) {
*static_cast<struct Device**>(ctx) = dev;
return false;
}
+10 -1
View File
@@ -118,7 +118,16 @@ error_t display_get_backlight(Device* device, Device** backlight) {
if (api->get_backlight == nullptr) {
return ERROR_NOT_SUPPORTED;
}
return api->get_backlight(device, backlight);
Device* found = nullptr;
error_t error = api->get_backlight(device, &found);
if (error != ERROR_NONE) {
return error;
}
error = device_get(found);
if (error == ERROR_NONE) {
*backlight = found;
}
return error;
}
const struct DeviceType DISPLAY_TYPE {