The notification object should actually get freed by notify_uninit. But
before freeing the notification, notify_uninit also sends the
CloseNotification signal directly, if the timeout is 0.
But the timeout of 0 should actually indicate a notification, which
never expires.
Fixes#415
After some research, the _GNU_SOURCE does not affect any function call
anymore. To avoid future failures on other systems not using glibc,
_GNU_SOURCE gets removed.
As mentioned in #368 testing for invalid values with the current
implementation would result in misleading error messages being printed
to stdout. These tests should be disabled until a solution is found.
time(NULL) is vulnerable against timeshifts by NTP, timezones,...
g_get_monotonic_time() is not, but counts its in microseconds with the
gint64 datatype. To prevent any conversion bugs, all internal
timeformats are now using a gint64 and only get converted during import
or export (DBus notification arrives, configuration reading, age
threshold display).
Since the format supports flags for including the icon name in the
notification the icon should be initialized first (and set to the
default if not set) in order for the flag to function properly.
Previously, notifications had been replaced by removing the notification
out of the displayed/queue lists, redrawing the window and then adding
the new notification into the queue. This produced a flickering in
dunst.
By avoiding the overhead of closing and opening the window (simply
replacing the datapointer of the list), the flickering disappears.
It's hard to trace back, which methods in option parser require freeing
the result and which prohibit it. Marking all non-freeable values as
const lets this problem solve the compiler.
Get the default value for ellipsize from config.h, instead of
setting it in two different places (in case it is not set, and in
case its value is invalid).
so that dunst binaries build in a reproducible way
in spite of indeterministic filesystem readdir order
See https://reproducible-builds.org/ for why this is good.