since timers are only activated by the main GUI thread in 'gsourceDispatch'.
This solves issue TDE/tdebase#635.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
(cherry picked from commit 6da60fd237)
Although highly unlikely, the following situation was possible:
- a thread is restarted while still running. The call to the second 'start()' blocks because the thread is still running
- the OS decides to randomly wake up the thread that called 'start()'
- a second thread is started and runs in parallel to the first thread, with obvious undefined behavior
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
(cherry picked from commit 3143d2d40a)
This relates to issue #162.
The new code is partially taken from Qt4 but with some local rework.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
(cherry picked from commit c5cda03125)
If the selected font supports the required characters, the text will be displayed correctly.
If the selected font does not support such characters, empty boxes will be displayed in place of the expected text.
Part of the code changes comes from Qt4 code.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
(cherry picked from commit e0a38072cf)
Threads created with pthread are created in detach mode. Threads created using glib thread functions are instead created as joinable. The fix makes glib-created threads detached, so that the thread resources are released when the thread completes.
This resolves TDE/amarok#30 and will benefit any place where a TQThread is used.
Manually cherry-picked from commit 81288cfc.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Key points:
1. a TQPostEventList can now have an associated mutex, which is used in case of the global post event list (GPEL)
2. the lifetime of the GPEL is no longer associated to the lifetime of the TQApplication object, but rather extended to the lifetime of the main thread. The GPEL is a static local initialized on first access and destroyed when the global static object destructor is invoked
3. access to the GPEL after the TQApplication object has been destroyed has been minimized by protecting calls in ~TQObject() and ~TQWidget().
4. special care was taken not to affect performances or unnecessarily create tons of unused TQMutexes
This replaces PR #182. Technically it is still possibly unsafe due to the order of destruction of the globat static objects not being guaranteed across multiple compilation units, but the aforementioned changes should minimize (possible to zero) the chances of a SEGV happening.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
(cherry picked from commit ddce1c91f8)
There were two flags for read-only with different capitalization:
readonly and readOnly. This was probably a mistake.
Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
(cherry picked from commit 9c5ea5617a)
mightStartDrag might have been used uninitialized when moving mouse with
pressed mouse button into window.
Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
(cherry picked from commit 2b1c78cb53)
Improve TQFont cleanup making sure that all instances of TQFont are
destroyed before TQApplication (or specifically before disconnect from
X11). This gets reed of several valgrind complains about leaks deep
inside fontconfig.
Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
(cherry picked from commit 1b951e5229)
Improve TQFont cleanup making sure that all instances of TQFont are
destroyed before TQApplication (or specifically before disconnect from
X11). This gets reed of several valgrind complains about leaks deep
inside fontconfig.
Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
(cherry picked from commit ffbaaf0e1c)
Otherwise it results in small memmory leakage on exit of Xlib data.
Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
(cherry picked from commit fb0d62eec8)
- rename fontsetRefCount -> fontsetCacheRefCount
- move fontsetCacheRefCount to constructor as setHolderWidget() could be
called more than once
Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
(cherry picked from commit e1bb179fde)
As derivative from it e.g. TQPrinterUnixPrivate are getting deleted (e.g
in unix TQPrinter implementation) by a reference to base class.
Also added missing include to the header.
Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
(cherry picked from commit 5920542e9e)
valgrind was complaining about access to uninitialized data because
unused elements in client_message.data.l array weren't set o any value.
Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
(cherry picked from commit 8a13d9aef4)
Before that the allocations of TQThreadStorage objects from the main
thread were never destroyed and memory associated with them were never
freed. The second one isn't a huge problem as at that point program is
terminating anyway (but it still makes valgrind complain). The first one
is the bigger issue as destructors might contain some essential external
cleanups like removing temporary files.
Also make `TQApplication::guiThread()` return `0` when the thread is
destroyed (may happen on the program exiting during destruction of
statics).
Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
(cherry picked from commit b1e6f38464)
Also rearrange code a bit so it would be obvious that the function
doesn't return a dangling reference.
Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
(cherry picked from commit bcda401191)