mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
qTox is a chat, voice, video, and file transfer IM client using the encrypted peer-to-peer Tox protocol.
523e419adf
Could only be hit by pausing at a key point in a debugger until the call timed-out. Having one thread going up the call stack and acquiring locks (toxcore callbacks), while another thread goes down taking locks in the other order (CoreAV calling toxav functions) creates some pretty freezy situations. The deadlock was caused by the GUI thread calling the CoreAV thread, acquiring the CoreAV callback, then right before calling a toxav function, not schedule the thread until the call times out. At this point the toxcore thread fires its state callback to tell us the call is over, locking internal toxcore/toxav mutexes, it reaches our callback function which tries to switch to the CoreAV thread to clean up the call data structures, but has to wait since the CoreAV thread holds its own lock. At this point if we resume the CoreAV thread, it'll be busy calling into a toxav function, which tries to acquire internal toxav locks, those locks are held by the toxcore callback so we deadlock. Our solution is that when getting a toxcore callback, we immediately switch to a temporary thread, allowing toxcore to release the locks it held, and that temporary thread tries to switch to do work on call data structures. Meanwhile if the CoreAV thread needs internal toxcore locks, it can get them. |
||
---|---|---|
android | ||
audio | ||
img | ||
osx | ||
res | ||
smileys | ||
src | ||
tools | ||
translations | ||
ui | ||
updater | ||
windows | ||
.gitattributes | ||
.gitignore | ||
.travis.yml | ||
android.qrc | ||
bootstrap-osx.sh | ||
bootstrap.bat | ||
bootstrap.sh | ||
dialogs.ini | ||
INSTALL.md | ||
LICENSE | ||
qTox.desktop | ||
qtox.pro | ||
README.md | ||
res.qrc | ||
simple_make.sh |
qTox
Compile ⦁ Contribute ⦁ Report bugs ⦁ Translate ⦁ Jenkins builds ⦁ Keyboard shortcuts ⦁ Mailing list ⦁ IRC Channel: #qtox@freenode
qTox is a powerful Tox client that follows the Tox design guidelines while running on all major platforms.
- Windows:
- Linux:
- Mac:
Nighly builds do not update automatically at this stage of development, so make sure you get back to this site and regularly download the latest version of qTox.
Screenshots
Note: The screenshots may not always be up to date, but they should give a good idea of the general look and features.
Features
- One to one chat with friends
- Group chats
- File transfers, with previewing of images
- Audio calls, including group calls
- Video calls
- Tox DNS and Tox URI support
- Translations in various languages
- Avatars
- Faux offline messages
- History
- Screenshots
- Emoticons
- Auto-updates on Windows and Mac, packages on Linux
- And many more options!