1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00
Commit Graph

3890 Commits

Author SHA1 Message Date
Anthony Bilinski
41b2b35ce3
fix(model): return connection from interface macro
connection is normally returned from Qt's connect, and the caller may want to
track the connection to manually disconnect it.
2020-02-06 16:48:56 -08:00
sudden6
c507d2665d
fix(coreav): prevent racy access to call variable 2020-01-29 22:22:18 +01:00
sudden6
dfcfb7d5e0
fix(coreav): change some lock to write locks
I missed some cases where data was written.
2020-01-29 22:22:18 +01:00
sudden6
141cbf8870
fix(coreav): fix assert because c-toxcore calls from unexpected thread
c-toxcore calls the groupCallCallback from it's main thread instead of
the ToxAV thread as expected, this was triggering an assertion.

Aditionally the destructors of Core and CoreAV were fixed, because they
now either crashed or deadlocked qTox when it was closed while a group
call was still running.
2020-01-29 22:22:18 +01:00
sudden6
4b9e4a571d
fix(coreav): avoid deadlock between CoreAV, main and Audio thread
This actually fixes two problems:

1) CoreAV and Audio thread both locked the callsLock and audioLock in
different orders, resulting in a deadlock of both threads. This fixed by
using a ReadWriteLock in the CoreAV thread.

2) Multiple functions were emitting signals while holding a lock. This
is unsafe, because the connected slot may acquire any other lock. This
is fixed by releasing the locks before emitting signals.
2020-01-29 22:22:18 +01:00
sudden6
9499925fb2
fix(coreav): cleanup assertions
It doesn't really make sense to assert that the callbacks are coming
from any other thread than CoreAV, when we actually want to ensure the
callback is coming from Core thread.

Remove over agressive assert from sendGroupCallAudio(...), this function
should be callable from any thread.
2020-01-29 22:22:18 +01:00
sudden6
98cfe9838f
refactor: properly lock against Core thread
We we're calling toxav_* functions without synchronizing to any of the
Tox threads.

Additionally remove the call timeout, it creates timers from different
threads, which causes errors.
2020-01-29 22:22:18 +01:00
sudden6
29f659c659
feat(coreav): add assertions to check for threading errors 2020-01-29 22:22:18 +01:00
sudden6
c332cc0cca
refactor(coreav): simplify start sequence 2020-01-29 22:22:17 +01:00
sudden6
2bc0057bbd
refactor(coreav): move threading of CoreAV to single mutex
Use a standard mutex instead of trying to build proper locking
ourselfes.
2020-01-29 22:22:17 +01:00
Anthony Bilinski
981ecfcaeb
refactor(chatform): combine toggleVideoPreview implementations 2020-01-26 04:29:56 -08:00
Anthony Bilinski
89913e0f9a
refactor(netcam): remove GenericNetCamView, merge into NetCamview
Without GroupNetCamView, the split in arbitrary.
2020-01-26 04:29:55 -08:00
Anthony Bilinski
41d8f66e08
refactor(chatform): change ChatForm's netcam to NetCamView
Unlike GenericChatForm, ChatForm knows that it always has a NetCam
2020-01-26 04:29:55 -08:00
Anthony Bilinski
600993b43a
refactor(chatform): move netcam ownership to ChatForm from GenericChatForm
Since now only ChatForm uses the NetCamView.
2020-01-26 04:29:55 -08:00
Anthony Bilinski
8d8e75b800
refactor(chatform): move onMessagesClicked, onSplitterMoved to ChatForm
These API are only relevant for NetCamView, which is only used by ChatForm.
2020-01-26 04:29:55 -08:00
Anthony Bilinski
4c816b1bff
refactor(chatform): move create/show/hide NetCamView API to ChatForm
Since NetCamView is now only used by ChatForm, GenericChatForm shouldn't have
any of its functionality.
2020-01-26 04:29:54 -08:00
Anthony Bilinski
91bcd211a7
refactor(netcam): remove GroupNetCamView class
Fix #5918
2020-01-26 04:05:39 -08:00
Anthony Bilinski
366478fca9
chore: remove "Hardware" from issue template
For the grand majority of bug reports, user hardware isn't relevant. Figuring
out what to write isn't always trivial.
2020-01-26 02:33:20 -08:00
Anthony Bilinski
49abc996ae
Merge branch 'v1.17-dev' 2020-01-19 16:16:57 -08:00
accelsao
bdb3b61ee0
fix(net): check if the node has all needed fields
Fixes ##5766
2020-01-19 16:06:19 -08:00
Anthony Bilinski
cf672375be
revert(toxme): remove toxme from qTox - the service is offline permanently
As of 2019-10-09, toxme.io was taken offline permanently. Remove UI and code
in qTox relating to it. Revert this commit if it comes back online in the
future.

Fix #5897
2020-01-16 13:28:41 -08:00
accelsao
ca4f14cc4c fix(net): check if the node has all needed fields
Fixes ##5766
2020-01-14 09:04:55 +08:00
sudden6
547a038e48
refactor: remove AppImage update bridge
When re-evaluating our dependencies we decided that the update bridge
has a high potential for security issues because it's not widely used.
Additionally similar functionality is already present in qTox.
2020-01-13 11:19:01 -08:00
sudden6
5b3c8aec11
refactor: remove AppImage update bridge
When re-evaluating our dependencies we decided that the update bridge
has a high potential for security issues because it's not widely used.
Additionally similar functionality is already present in qTox.
2020-01-12 20:44:21 +01:00
Anthony Bilinski
f252816f55
Merge branch 'v1.17-dev' 2019-12-02 08:46:04 -08:00
Mick Sayson
e3e6e1d9c4
fix(history): Prevent invalid history access
* When the DB schema was too new we were accessing history anyways. This
has potential to just completely corrupt the DB
* When history was disabled there was a chance we would attempt to write
to history anyways. Added more checks in this area
* Chatform was accessing invalid iterators when there were no displayed
messages. Added a guard for this case
2019-12-02 03:04:53 -08:00
Katherine Mantel
8c5cab935c
fix(ui): fix auto-accept directory setup display
Fixes #5917
2019-12-02 00:54:19 -08:00
Anthony Bilinski
88d10b1249
refactor(widget): remove uneeded check of if message is targetted
It's only relevant for group messages, where the check already exists.
2019-11-27 08:26:59 -08:00
Anthony Bilinski
9b23abc6de
fix(core): avoid using stack allocated memory past end of scope
tox_file_send was using a pointer to memory that was out of scope. Extend
lifetime of avatarHash to avoid this.
2019-11-27 07:28:47 -08:00
Anthony Bilinski
1f80173b2d
fix(offlinemsg): don't invalidate iterator before use
QMap::erase invalidates the iterator, meaning our usage of it on the
next line was unsafe.
2019-11-27 07:28:47 -08:00
Anthony Bilinski
479b39f536
fix(offlingmsg): only dipatch offline messages on friend online change
Before if the new status was online, we would dipsatch, which could cause
double sends in the case of a friend going from e.g. busy -> away
2019-11-25 20:52:06 -08:00
Anthony Bilinski
239dfdc65c
refactor(status): move isOnline into Status from Friend
Allows checking if a status if equivalent to Online without needing a Friend
class.
2019-11-25 20:52:06 -08:00
Anthony Bilinski
e9570eafdf
Merge branch 'v1.17-dev' 2019-11-25 16:56:50 -08:00
Anthony Bilinski
edd72906fb
perf(history): enable sql index on chat_id in history table
This makes every query with a "WHERE history.chat_id" clause quicker,
improving history load time by 50% on my profile.

Related to #5812
2019-11-25 16:21:17 -08:00
Anthony Bilinski
af19c0d73b
Merge pull request #5875
Mick Sayson (1):
      fix(chatform): Prevent date line oscillations maxing CPU
2019-11-23 17:27:36 -08:00
Anthony Bilinski
0055c7760c
fix(ui): fix reversed mute/unmute hover text 2019-11-18 13:56:56 -08:00
Igor Kushnir
f9f634b326 fix(ui): quit qTox on Ctrl+Q when "Close to tray" is enabled
Fixes #5925.
2019-11-17 15:26:49 +02:00
Mick Sayson
3205c2c407
fix(groups): Correct color of labels in group call
Group calls are supposed to show the name of each member under their
avatars. The color of the text was previously fixed to white regardless
of the background ignoring the color of the background.

This fix ensures that the background color is not the same color as the
label text
2019-11-16 14:33:28 -08:00
Mick Sayson
ce9e820b37
fix(groups): Avoid segfault when resizing group audio window
Avatars for group members currently in a call are resized depending on
the area they are displayed in. Previously a scrollbar would appear and
disapear based on the size of the contents. This resulted in
oscillations that ended in a SIGSEGV.

This fix avoids the oscillations by fixing the scrollbar to always be
shown
2019-11-16 14:33:27 -08:00
sudden6
22787a7f3c
Merge pull request #5920
Mick Sayson (2):
      fix(groups): Avoid segfault when resizing group audio window
      fix(groups): Correct color of labels in group call
2019-11-15 21:51:54 +01:00
Mick Sayson
f27eb5b76c
fix(groups): Correct color of labels in group call
Group calls are supposed to show the name of each member under their
avatars. The color of the text was previously fixed to white regardless
of the background ignoring the color of the background.

This fix ensures that the background color is not the same color as the
label text
2019-11-12 02:44:42 -08:00
Mick Sayson
d4d4308e28
fix(groups): Avoid segfault when resizing group audio window
Avatars for group members currently in a call are resized depending on
the area they are displayed in. Previously a scrollbar would appear and
disapear based on the size of the contents. This resulted in
oscillations that ended in a SIGSEGV.

This fix avoids the oscillations by fixing the scrollbar to always be
shown
2019-11-12 02:44:42 -08:00
Anthony Bilinski
6179250458
Merge branch 'v1.17-dev' 2019-11-11 17:38:02 -08:00
Mick Sayson
836718aa26
fix(groups): Fix invalid group list on group member join
The call to Core::getGroupPeerNames is expected to return a list where
the index in the list is the group member id. In any error case we were
previously breaking this constraint. It turns out that every time
someone joins a group we call this function before they have a valid
name resulting in their id not being added to the list.

This fix ensures that the list coming out of Core::getGroupPeerNames
always has a full list.

Fixes #5838
2019-11-11 17:36:53 -08:00
Mick Sayson
87eed97ab3
fix(calls): Fix SIGSEGV on quit while in call
On application close we used to access invalid memory associated with
the audio subsystem. This was because on destruction of static variables
we tried to access state associated with an already destructed item.

These variables seem to have no good reason to be static. They should be
tied to a single CoreAV instance and are only accessed through an
existing CoreAV instance.
2019-11-11 17:19:21 -08:00
Mick Sayson
64bae38b99 fix(chatform): Prevent date line oscillations maxing CPU
The previous implementation of hiding the date line would cause 100% cpu
usage. When the date line was shown it would hide the top line, causing
the date line to be hidden again due to a state change in which dates
was visible.

This is a minimal patch to work around the issue by pretending the line
covered by the date line is the first visible line when the dateline is
shown

Fixes #5620
2019-11-09 15:00:36 -08:00
Mick Sayson
fd243738c1 fix(groups): Fix invalid group list on group member join
The call to Core::getGroupPeerNames is expected to return a list where
the index in the list is the group member id. In any error case we were
previously breaking this constraint. It turns out that every time
someone joins a group we call this function before they have a valid
name resulting in their id not being added to the list.

This fix ensures that the list coming out of Core::getGroupPeerNames
always has a full list.

Fixes #5838
2019-11-09 14:21:12 -08:00
Anthony Bilinski
17bbe24ec5
chore: log schema version when we error due to future db 2019-11-04 14:42:20 -08:00
Anthony Bilinski
f7d82a425d
Merge branch 'v1.17-dev' 2019-10-21 23:49:36 -07:00
Anthony Bilinski
746314baf2
fix(history): move stuck action messages to broken_messages table
Before a bug in qTox would make it possible for a user to try to send an empty
action type message. This would fail to send at toxcore, but still be persisted
in history, causing it to fail every time FauxOfflineEngine tried to resend
it. Moving these stuck messages into the broke_messages table will stop qTox
from attempting to deliver them on each connect, and display in the GUI to
users that the messages aren't really pending anymore.
2019-10-20 02:35:20 -07:00