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

7468 Commits

Author SHA1 Message Date
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
sudden6
9fa6a4996d
chore: add OARS tags to appimage.xml
These tags help app stores and application launchers to put qTox in the
correct categories.

Fixes #5152
2019-12-02 02:02:08 -08:00
Anthony Bilinski
8a821c8858
Merge pull request #5941
Katherine Mantel (1):
      fix(ui): fix auto-accept directory setup display
2019-12-02 01:59:42 -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
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
05064771ab
fix(test): create db tables in defined order, verify indexes
indexes need to be created after their corresponding table is created.
QMap doesn't enforce insertion order, just key order, so use a vector.
Also verify indexes from sql_master instead of only tables.
2019-11-25 16:21:17 -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
97d8a53692
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-22 02:48:37 -08:00
Anthony Bilinski
0055c7760c
fix(ui): fix reversed mute/unmute hover text 2019-11-18 13:56:56 -08: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
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
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
Anthony Bilinski
08436bc2f1
Merge pull request #5921
Mick Sayson (1):
      fix(calls): Fix SIGSEGV on quit while in call
2019-11-11 17:25:28 -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
Anthony Bilinski
17bbe24ec5
chore: log schema version when we error due to future db 2019-11-04 14:42:20 -08: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
Anthony Bilinski
89e94b6f89
fix(chatform): don't try to send empty action messages
Otherwise sending just "/me " calls down to core with 0-length action, which
causes a toxcore send error.

There may be messages that are stuck in history as pending with "/me " content,
causing them to fail to send on every start. Those should be moved to the new
broken_messages table, similar to stuck pending messages from #5776. There's no
reason this fix to stop adding more broken messages needs to wait on the
history fix, though.
2019-10-20 02:35:20 -07:00
Anthony Bilinski
1a726b54cd
fix(history): display broken messages UI with error icon
Allows users to still see their broken messages in the chatlog, but in a way
that's clear that they haven't been delivered and won't be sent.
2019-10-20 02:34:48 -07:00
Anthony Bilinski
527c7d2d3c
refactor(history): represent message state as enum class
ensures that only one state is set at a time, avoids managing multiple bools
2019-10-20 02:34:48 -07:00
Anthony Bilinski
f6a15366ef
fix(history): select broken messages from History, track in ChatLogMessage 2019-10-20 02:34:48 -07:00
Anthony Bilinski
cd75618e38
refactor(history): rename pending message variables
"Sent" to "Delivered", since that's what we're tracking also rename "isOffline"
to "isPending", which is boolean the same, but "isOffline" was opposite of its
correct value before, so boolean reverse the assignment.
2019-10-20 02:34:47 -07:00
Anthony Bilinski
b28dc30061
fix(history): move stuck pending message into broken_messages table
Fix #5776

Due to a long standing bug, faux offline message have been able to become stuck
going back years. Because of recent fixes to history loading, faux offline
messages will correctly all be sent on connection, but this causes an issue of
long stuck messages suddenly being delivered to a friend, out of context,
creating a confusing interaction. To work around this, this upgrade moves any
faux offline messages in a chat that are older than the last successfully
delivered message, indicating they were stuck, to a new table,
`broken_messages`, preventing them from ever being sent in the future.
2019-10-20 02:34:47 -07:00
Anthony Bilinski
f72f3f714d
fix(history): handle errors during db upgrade 2019-10-20 02:34:47 -07:00
Anthony Bilinski
dacfcdadac
refactor(history): apply db schema upgrade one version at a time
This allows upgrade steps to query the db at the last version and run C++ code
on the results, then do a single transaction to make the upgrade, instead of
all actions of each upgrade step being required to be part of the overall
upgrade transaction.
2019-10-20 02:34:47 -07:00
Anthony Bilinski
996b17b1d1
refactor(test): allow generic schema creation and verification in for db schema 2019-10-20 02:34:47 -07:00
Mick Sayson
dbef0b7508
fix(offlinemsg): fix offline message dispatching on history load
* Fix callback hookup order in ChatHistory
* Add correct call to SessionChatLog to insert an unfinished message
* Fix incorrect logic in parsing History database response
2019-10-20 02:34:47 -07:00
Anthony Bilinski
86b55a0fb0
fix(db): show full sqlite error message 2019-10-20 02:34:46 -07:00
Anthony Bilinski
d98fe85a58
fix(db): prepare and execute queued statements one at a time
* Allows for queued preparations to depend on the execution of previous statements
2019-10-20 02:34:46 -07:00
Anthony Bilinski
8f44fb6355
Merge pull request #5894
jenli669 (1):
      fix(loginScreen): make loginScreen return values comply with Qt standards
2019-10-18 17:25:37 -07:00
jenli669
b4bc09345c
fix(loginScreen): make loginScreen return values comply with Qt standards
This commit makes LoginScreen return QDialog::Rejected (0) and
QDialog::Accepted (1) instead of C standard return values. This should be more
robust with regards to special cases in Qt implementation.

Fixes #5781
2019-10-18 16:24:53 -07:00
Anthony Bilinski
a44cce65be
fix(travis): update pyenv to python 3.7 after updating ubuntu to 16.04
3.6 can no longer be found, causing CI failures
2019-10-17 10:44:58 -07:00
Anthony Bilinski
e85d3f522a
fix(icon): use Qt tray icon in all cases, remove platform specific backends
qTox added specialized tray icon backends over time to work around bugs with
the default implementation, since then our GTK+2 backend has stopped working,
our appindicator backend was never selected by default by cmake, and
statusnotifier was never selected at SystemTrayIcon construction, leaving us
only ever using the broken GTK+2 backend, or theoretically the Unity backend,
which I didn't see selected on Ubuntu 16.04 Unity. In all other cases we would
fall back to the Qt backend.

Qt icon has improved over time, and our platform specific icons have become
stale, with GTK+2 becoming deprecated and GTK+3 not having a similar feature,
QSystemTrayIcon has been tested on a variety of DEs and works as well or better
in all cases, as shown in the table at
https://github.com/qTox/qTox/issues/5881#issuecomment-541892457

Fix #5881
Fix #5859
2019-10-16 13:27:29 -07:00
Anthony Bilinski
93c9eef51f
fix(ci): fix travis' window build in debian docker by upgrading libseccomp2
seccomp is used by the docker host, and the default version shipped with
Ubuntu 16.04 does not support syscalls used by Qt5's configure inside the
docker container. Upgrading libseccomp2 resolves this issue.

Fix #5874
2019-10-13 14:35:54 -07:00
Anthony Bilinski
16de5f8549
chore(ci): update travis to ubuntu 16.04, since 14.04 is EOL
Ubuntu has Qt 5.5.1 in its repos, so PPA is no longer required.
2019-10-10 14:11:21 -07:00
Jimi Huotari
c20e1c20e3
refactor(Qt): use 'storeRelaxed()' and 'loadRelaxed()'
This fixes build with Qt 5.14 by replacing the deprecated
QAtomic::load() and store() functions with the new ones.

- https://code.qt.io/cgit/qt/qtbase.git/commit/?h=5.14&id=79bdc7cf
2019-10-09 23:19:27 -07:00
Jimi Huotari
489d07c0eb
refactor(Qt): use 'QLatin1String' instead of 'QLatin1Literal' part 2
This is required when building against Qt 5.14.
2019-10-09 23:19:27 -07:00
Maxim Biro
710c32ded0
feat: add Fcitx and Uim support to AppImage 2019-10-09 23:19:27 -07:00
Maxim Biro
2419b62762
fix(build): fix OpenAL Soft failing to build with newer CMake 2019-10-09 23:19:27 -07:00
Maxim Biro
8be99c0861
fix(build): fix SQLCipher build issue with OpenSSL 1.1.1 on Windows 2019-10-09 23:19:27 -07:00
Maxim Biro
39122d741a
chore(windows): update VPX to 1.8.1 2019-10-09 23:19:27 -07:00
Maxim Biro
a7555c6925
chore(windows): update FFmpeg to 4.2.1 2019-10-09 23:19:26 -07:00
Maxim Biro
003f8ca988
chore(windows): update OpenSSL to 1.1.1d 2019-10-09 23:19:26 -07:00
Maxim Biro
13f147141d
chore(windows): update Qt to 5.12.5 2019-10-09 23:19:26 -07:00