Shared Library Changes for Upcoming Release 2.2.1 (Preliminary)
Shared library libddcutil is backwardly compatible with the one in
ddcutil 2.2.0. The SONAME is unchanged as libddcutil.so.5. The released library
file is libddcutil.so.5.3.0.
For the most part, shared library related changes reflect bugs uncovered
by, and enhancements for, KDE PowerDevil's use of libddcutil.
Fixed
- Functions ddca_find_display_ref() and ddca_get_display_ref() were returning a
pointer to the internal Display_Ref struct rather than an external integer
DDCA_Display_Ref, causing segfault or return code DDCRC_INVALID_DISPLAY
when used on a subsequent api call such as ddca_open_display2(). Addresses issue #528.
- ddca_redetect_displays(): block if called with callback threads active or
if already executing
- ddca_close_display(): allow execution even if libddcutil is quiesced.
Avoids a possible deadlock due to an internal display lock not having been released.
- ddca_stop_watch_displays() did not release the X11/Wayland connection
obtained by ddca_start_watch_displays(). This also occured with each
ddca_redetect_displays() call. As a result KDE PowerDevil eventually
exhausted X11 connections of a very long running system with repeated
display connections and disconnections. Pull request #519.
- KDE powerdevil was terminating with status success instead of failure if
libddcutil terminated with a traced assertion, causing the powerdevil
service to not restart automatically. Macro TRACE_ASSERT() is modified to
use __assert_fail() instead of exit() for termination.
- Maximum wait time on internal function lock_display() not respected, possible infinte
loop. Addresses issue #511
- Make test for missing DRM card-connector directories more robust. Handle
the case where Nvidia driver 340 series only partially sets attributes in the directory. Addresses issue #507.
- Certain API functions were not recognized as arguments to --trcfunc and --trcfrom.
These included ddca_find_display_ref, ddca_get_display_ref, report_parsed_capabilities.
- Callback function handling made more bulletproof
- Close and unlock displays left open by user callback function
- Write syslog messages (with log level NOTICE) before and after executing
the callback function
API Changes
- Struct DDCA_Display_Info2 is an extended version of DDCA_Display_Info that
adds fields for the display's sysfs card-connector directory, how that
directory was determined (precisely using I2C bus number or heuristically
using EDID), and the DRM connector id. API functions have been added to
use this struct: ddca_get_display_info2(), ddca_free_display_info2(),
and ddca_report_display_info2(). Addresses issue #518.
Added Enums |
|
DDCA_Drm_Connector_Found_By |
How association between display reference and sysfs |
|
DRM card-connector directory was made |
Added Structs |
Comments |
DDCA_Display_Info2 |
Extends DDCA_Display_Info with additional fields drm_card_connector |
|
drm_card_connector_found_by, drm_connector_id |
Added API Functions |
Comments |
ddca_get_display_info2 |
|
ddca_free_display_info2 |
|
ddca_report_display_info2 |
|