Functions like panelreel_next() can encounter the same issues driving tablet_update(): they're presumably called whilst holding some application lock, need to take the panelreel lock when called, and can then call back into the application. Boom, deadlock (without a recursive mutex). They should instead use the same mechanism as update_tablet().
Functions like panelreel_next() can encounter the same issues driving tablet_update(): they're presumably called whilst holding some application lock, need to take the panelreel lock when called, and can then call back into the application. Boom, deadlock (without a recursive mutex). They should instead use the same mechanism as update_tablet().