-
Notifications
You must be signed in to change notification settings - Fork 41
Open
Description
When using is_on() on a Raspberry Pi, the cec driver sometimes freezes completely so a reboot of the Raspi is needed to recover cec functionality.
Possibly this crash is caused when my TV does not respond to the request.
May be it is a problem in libcec or the raspi kernel driver (?) but I had a quick look in this projects device.cpp file on function Device_is_on(Device * self) and saw that a reference counting is done on a local variable. Isn't this wrong?
I suggest following correction:
--- device.cpp 2020-12-16 17:50:54.178413383 +0100
+++ b.cpp 2020-12-16 17:52:34.042359608 +0100
@@ -85,23 +85,20 @@
Py_BEGIN_ALLOW_THREADS
power = adapter->GetDevicePowerStatus(self->addr);
Py_END_ALLOW_THREADS
- PyObject * ret;
switch(power) {
case CEC_POWER_STATUS_ON:
case CEC_POWER_STATUS_IN_TRANSITION_ON_TO_STANDBY:
- ret = Py_True;
+ Py_RETURN_TRUE;
break;
case CEC_POWER_STATUS_STANDBY:
case CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON:
- ret = Py_False;
+ Py_RETURN_FALSE;
break;
case CEC_POWER_STATUS_UNKNOWN:
default:
PyErr_SetString(PyExc_IOError, "Power status not found");
return NULL;
}
- Py_INCREF(ret);
- return ret;
}
Metadata
Metadata
Assignees
Labels
No labels