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

447 Commits

Author SHA1 Message Date
sudden6
1f0467bb1b
refactor(core): add new class for easy string conversion 2017-03-09 11:01:34 +01:00
Diadlo
ea50eaaef7
fix(core): Ignore online connection status
Fix #4010.

qTox use status system, where offline is one of the status, but toxcore
use two different meaning: 'connection' and 'user status'. To correct
qTox status handling we should ignore online connection status.
2017-03-08 08:55:17 +03:00
sudden6
aabf34ebad
refactor: remove unused file 2017-03-05 12:05:41 +01:00
Zetok Zalbavar
80f5de31b3
style: reformat current C++ codebase using clang-format 2017-02-26 11:52:45 +00:00
tux3
c75ee8a661
fix: Various IPC event handling and related bugs on startup
Fixes #1926 : When an IPC event was processed locally, if the window was closed before the core could start, the event handler would be forever stuck in the background waiting for the core to start. We fix this by substituting QApplication::quit() by a Nexus::quit() function and a Nexus::isRunning() function, which gives us a condition for exiting blocking processEvents() loops. We cannot simply use QApplication::quit(), because this function has no effect before the start of the event loop.

The problem was further exacerbated by the Tox URI event handler being (incorrectly) blocking. The IPC owner would block in this event handler, and the sender of the event would give up waiting and process the event itself a second time, potentially triggering the first bug. We fix the event handlers accordingly to be (mostly) non-blocking.

Also fixes a related deadlock between ~Core and ~Profile in the case of an early exit
2017-02-17 17:18:52 +01:00
sudden6
14ee8af3cd
fix(toxencrypt): return the plaintext after decryption
fix #4162
2017-02-10 22:33:57 +01:00
sudden6
01b9327827
Merge pull request #4146
agrecascino (1):
      fix(audio): alternate audio fix implementation from #4139
2017-02-08 13:34:22 +01:00
agrecascino
62ac480171 fix(audio): alternate audio fix implementation from #4139 2017-02-07 15:44:35 -05:00
sudden6
7cd800374a
refactor(encryption): move everything to ToxEncrypt
This commit removes coreencryption.cpp and replaces it with ToxEncrypt.
2017-02-07 20:05:32 +01:00
Diadlo
f5c0d61ae6
feat(toxpk): Add 'ToxPk::getPkSize()' method 2017-02-07 20:10:44 +03:00
sudden6
a5955c67ed
feat(toxencrypt): add function to get min length for isEncrypted() to
succeed

Also improve documentation
2017-02-06 11:09:59 +01:00
sudden6
38cecdc780
refactor(history): remove deprecated historykeeper
This commit removes historykeeper and code only used by it.

BREAKING CHANGE:
qTox can't open old historykeeper chatlogs after this commit. Use
previous versions to migrate to the new database.
2017-02-05 22:20:12 +01:00
sudden6
5c5dce4d33
refactor(core): use factory methods for ToxEncrypt 2017-01-29 13:48:48 +01:00
sudden6
d07d0cfbf0
refactor(core): Introduce new class ToxEncrypt to interface with toxencryptsave 2017-01-29 13:48:43 +01:00
Diadlo
320099faf8
fix(chatform): Add ability to cancel call
Fix #4016.
2017-01-29 00:37:31 +03:00
Diadlo
29bb319025
refactor(friend): Small refactoring
Method renamed to be same with `Group` i.e. `getGroupId`, changed Friend
eventFlag type on bool
2017-01-05 00:56:32 +03:00
sudden6
e07d8d358f
feat(toxid): reduce passing Tox IDs around
reasons:
- most of the time we don't even know the Tox ID but only the Public Key
- use well defined objects instead of strings that could be anything
2017-01-04 00:20:24 +01:00
sudden6
2f4e8dc3e8
refactor(toxpk): add class representing a Tox Public Key 2017-01-02 22:58:05 +01:00
sudden6
0b2f22d521
refactor(toxid): improve checks for valid ToxIDs 2016-12-30 15:54:56 +01:00
Zetok Zalbavar
541bc0e174
refactor(core): simplify code for tox interval during file transfer
Also some style changes.
2016-12-30 13:57:55 +00:00
Zetok Zalbavar
d4ac13dbf4
revert: "refactor: Added to include path and exclude it from all includes"
Revert needed, since otherwise there is no way to do automatic sorting
of includes.
Also reverted change to the docs, as leaving it would make incorrect
docs.

In case of conflicts, includes were sorted according to the coding
standards from #3839.

This reverts commit b4a9f04f92.
This reverts commit 5921122960.
2016-12-29 16:10:53 +00:00
sudden6
d196611ffe
feat(toxid): Improve validation of Tox IDs 2016-12-29 13:37:01 +01:00
sudden6
3d0938a3c6
refactor(toxid): improve code clarity and documentation 2016-12-29 13:37:01 +01:00
sudden6
152c134a4b
refactor(toxid): drop the cData class in favour of ToxId 2016-12-29 13:37:01 +01:00
sudden6
94ec5614f2
feat(toxid): Improve the ToxId class 2016-12-29 13:36:56 +01:00
Diadlo
b4c4569299
feat(toxid): Added correct checksum validation.
Fix #3837
2016-12-27 01:40:44 +03:00
sudden6
e7276e7b43 fix(warnings): fix some warnings about the stack protector not working 2016-12-26 14:40:32 +01:00
Zetok Zalbavar
4bcf57b236
style: adjust function arg names in header to changes in core.cpp 2016-12-25 18:24:52 +00:00
Diadlo
4f9cb0b008
refactor: rename args to conform to C++11 § 17.6.4.3.2
Fixed typo and small style improvements.
2016-12-19 01:08:33 +03:00
Diadlo
32909559b6
docs: Added docs to PassKeyDeleter and updated Core methods 2016-12-19 00:42:54 +03:00
iphydf
de407c4714
chore: Update qTox to the latest toxencryptsave API.
Since ownership is somewhat unclear, we now use shared_ptr to pass
these around instead of unique_ptr.
2016-12-19 00:42:54 +03:00
Diadlo
3c304c50bc
refactor(core): Added error handling 2016-12-19 00:42:54 +03:00
Diadlo
98fa64f841
refactor(core): Remove code duplication for different types of messages 2016-12-19 00:42:54 +03:00
Diadlo
d371e78871
refactor(core): Update toxcore callbacks 2016-12-19 00:42:54 +03:00
Diadlo
e9a2fc6b57
refactor(core, widget): Update toxcore group API (new: conference) 2016-12-19 00:42:54 +03:00
Diadlo
49b3c4d4af
refactor(core): Add Core* as userdata to tox_iterate 2016-12-19 00:42:54 +03:00
Nils Fenner
917812daaa
fix: Status reflection for friend calls 2016-12-01 08:55:13 +03:00
Zetok Zalbavar
7b60a5dd36
chore: explicitly mention that copyright belongs to qTox contributors 2016-11-29 11:12:06 +00:00
Diadlo
b4a9f04f92
refactor: Added to include path and exclude it from all includes 2016-11-28 23:28:42 +03:00
sudden6
355fb2ae41
fix(core): don't emit idSet signal twice 2016-11-15 12:27:16 +01:00
Diadlo
2a88e5c069
refactor(toxid): Removed Core dependency from ToxId
It's needed to make ToxId just data structure
2016-11-15 02:18:48 +03:00
Diadlo
5d6445065e
refactor(core): Changed Core interface, added documentation
Implementation by @antis81
2016-11-14 16:16:59 +03:00
Zetok Zalbavar
a2912a376c
docs(doxygen): fix some warnings for toxcall.cpp 2016-11-13 23:14:38 +00:00
Diadlo
0a0db25f68
style(corefile): Small style fixes 2016-11-06 12:37:39 +03:00
Zetok Zalbavar
64bbc6cfbb
style: change postfix increment to prefix increment 2016-11-03 07:57:14 +00:00
iphydf
9795ec2e1c
chore: Improve diagnostics when toxcore failed to initialise.
This shows error codes in case of unknown errors, and handles malloc error
explicitly.
2016-08-23 22:40:29 +01:00
Diadlo
72780e6c7a
docs(todo): Changed todo format 2016-08-19 00:20:24 +03:00
Diadlo
31d8e7eef0
docs: Replaced simple on doxygen tag 2016-08-19 00:20:23 +03:00
Diadlo
9a62f44c33
docs(core): Added leading stars 2016-08-19 00:20:23 +03:00
Nils Fenner
f00b9008e6
feat(settings): add notification signals for changed settings values
Makes changes to settings application wide transparent. The properties section is optional in theory, but comes in very handy, if we decide to access settings e.g. from within a script context.
2016-08-14 18:08:24 +02:00
sudden6
2045585c77
Merge pull request #3185
initramfs (26):
      feat(video): redesign and improve VideoFrame class
      fix(video): fix CoreAV and VideoSurface to conform to new VideoFrame
      refactor(video): rename and make the frame alignment propety public
      fix(video): fix memory leak caused by unfreed buffers in CoreVideoSource
      fix(video): fix slanted video when video size is not divisible by 8
      refactor(video): use a new ToxAVFrame structure instead of vpx_image
      refactor(video): static cast video dimensions to suppress warnings
      feat(video): adds an ID parameter to the VideoSource class
      refactor(video): internalize frame reference counting
      feat(video): add accessor functions for sourceID and frameID
      refactor(video): make type aliases public
      refactor(video): use generics to simply VideoFrame conversion functions
      refactor(video): rename ToxAVFrame to ToxYUVFrame and add documentation
      refactor(video): update documentation to match new format (issue #3559)
      refactor(videoframe): correct mistakes in commit documentation format
      fix(video): fix a use-after-free with VideoFrame
      fix(video): added declaration for missing biglock in CameraSource
      docs(video): remove old unnecessary comment pertaining to removed code
      fix(video): fix invalid VideoSource ID allocation
      fix(video): specify color ranges for pixel formats that are not YUV
      fix(video): use a QReadWriteLock to manage camera access
      fix(video): force the use of non-deprecated pixel formats for YUV
      refactor(video): update code and documentation to honour QSize validity
      refactor(videoframe): move all inline/template functions into source
      fix(video): guard storeVideoFrame() against freeing in-use memory
      feat(video): add a isValid() function to ToxTUVFrame
2016-08-09 18:16:38 +02:00
Nils Fenner
b71c919f2a feat(settings): add RecursiveSignalBlocker
can be used to block any signals during settings ui initialization
2016-08-07 04:56:10 +02:00
initramfs
3e7d55e833
feat(video): add a isValid() function to ToxTUVFrame 2016-08-06 22:12:32 +08:00
initramfs
07f5cf3a65
refactor(video): update code and documentation to honour QSize validity 2016-08-05 09:16:31 +08:00
initramfs
607b8d5a20
docs(video): remove old unnecessary comment pertaining to removed code 2016-08-04 18:59:30 +08:00
initramfs
f85a299e75
refactor(video): rename ToxAVFrame to ToxYUVFrame and add documentation 2016-08-04 06:33:40 +08:00
initramfs
8bfbae1b47
refactor(video): use a new ToxAVFrame structure instead of vpx_image
Instead of misusing an existing structure from another library, defines
a new simpler structure that reflects the capabilities of the ToxAV
transport mechanism.
2016-08-04 06:33:40 +08:00
initramfs
277ddc3d2f
fix(video): fix CoreAV and VideoSurface to conform to new VideoFrame 2016-08-04 06:33:40 +08:00
Nils Fenner
31c154293b
refactor(coreav): fix static analysis warnings and code style 2016-08-01 21:24:53 +02:00
Nils Fenner
9f8ad3cf77
refactor(core): fix IndexedList comparison type casts from signed/unsigned 2016-08-01 21:24:53 +02:00
Diadlo
2696a9265a
docs(core): Change comment style 2016-07-27 23:39:22 +03:00
Nils Fenner
eb1e0091c4
Merge pull request #3488
Diadlo (1):
      style(toxid, widgets): Made constructor explicit
2016-07-24 09:51:16 +02:00
Diadlo
f8eda7eb57
style(core): Style fixes 2016-07-13 01:54:37 +03:00
Nils Fenner
88eca7e200
Merge pull request #3487
Diadlo (1):
      style(toxcall): Copy constructor return non-const reference
2016-07-13 00:14:20 +02:00
Diadlo
8e7a6c89c2
style(toxid, widgets): Made constructor explicit 2016-07-13 00:33:37 +03:00
Diadlo
ed04b2debf
style(toxcall): Copy constructor return non-const reference 2016-07-08 01:21:31 +03:00
Diadlo
c3de6238ca
feat(camerasource): Change default video mode to preferred 2016-06-25 14:20:13 +03:00
Diadlo
1ddc1371a0
fix(videoframe): Added correct image copy 2016-06-25 14:20:13 +03:00
Nils Fenner
792103f8b0
refactor(filter_audio): completely remove filter_audio dependency
The filter_audio API is not working for qTox/Tox and thus disabled by default via compiler switch. In current qTox UI, it is not configurable, even when this switch is enabled. According to issue #3194 the library is no longer maintained as well. I don't see any reason to keep it in qTox.
2016-06-04 22:12:27 +02:00
Diadlo
e087398f56
fix(core): Added emit idSet after set NoSpam
Fix #1680.
2016-04-25 01:43:36 +03:00
sudden6
5339ad978b
fix(groupaudio): don't play audio while call is inactive
This also avoids logspam, because toxcore keeps recieving audio data
even if the call is inactive.
2016-04-24 14:34:49 +02:00
sudden6
afcd146a5b
fix(groupaudio): avoid deadlock when ending groupcall
The offending statement caused a deadlock, because the audioLock was
locked twice by the audio thread.
2016-04-24 14:34:49 +02:00
Nils Fenner
356543ca3b
feat(audio): add (repair) support for group audio calls 2016-04-24 14:34:49 +02:00
Nils Fenner
e5c7b3a4f6
refactor(audio): completely remove Audio class dependency from Core
The Audio singleton instance initializes itself on startup. No need for an extra call.
2016-04-24 14:34:49 +02:00
Polshakov Dmitry
343568339f
style(constructors): Constructors are explicit now 2016-04-20 22:53:27 +03:00
Diadlo
f28c3a16ae fix(core, widget): Added checks
Fix #3133.
* Added check, that core and coreAv exist, before use them
* Added check, that tox exit, before use them
2016-04-14 23:40:06 +03:00
sudden6
a89b673b40 Revert "Revert changes from merge of #2092 pull request"
This reverts commit 06611d618e.
2016-02-20 22:32:57 +01:00
tux3
ce2f8fd1d5
Cleanup and improve audio input
We now subscribe to an event and wait for frames when capturing audio
input, the big avdantage is that we only have to fetch the frames from
the hardware once, and we don't need to cache anything.
The frames are simply dispatched to the client's callbacks immediately.

Also removes some outdated ifdefs that did not apply anymore.
2016-01-23 16:45:25 +01:00
tux3
2654b6cbcd
Safer casts in Core::getGroupPeerNames 2016-01-21 16:51:25 +01:00
tux3
8253e1e395
Fix #1409: Don't save core if nothing really changed 2016-01-21 08:04:46 +01:00
tux3
0955843b8d
Merge branch 'pr2799' 2016-01-16 14:30:41 +01:00
tux3
c576a1485a
Scan-build cleanup 2016-01-16 02:24:13 +01:00
Zetok Zalbavar
ccfb81b2e4
Add some basic documentation about Tox ID in source
Lets not make plaintext gods angry by linking to a dead html page.
2016-01-14 20:21:00 +00:00
Nils Fenner
552155bd1f
Merge PR #2719 from antis81:fix_audio_subscriptions
* fix dangling audio output device
* do not resubscribe sid in copy constructor
2015-12-23 23:29:20 +01:00
Nils Fenner
0615c7c3c6
reimplement audio in/out subscription concept 2015-12-20 09:45:43 +01:00
Nils Fenner
27bfade9e1
unsubscribe invalid ToxCall from audio when copied 2015-12-20 09:45:43 +01:00
Nils Fenner
02f5f0a391
remove obsolete include of audio.h 2015-12-20 09:45:43 +01:00
Nils Fenner
08c43d0b83
cleanup OpenAL compatibility code in audio class 2015-12-20 09:45:43 +01:00
Nils Fenner
a1b87194b8
fix #2504
We need to filter samples * channels; also cleaned up data types
2015-12-20 09:45:43 +01:00
Nils Fenner
bb7d2a72b7
privatized audio interface 2015-12-20 09:45:22 +01:00
Nils Fenner
c23cb0043f
implement actual audio in/out subscription management 2015-12-20 09:42:14 +01:00
Nils Fenner
e7f666be77
un-/subscribe audio in/out in tox-call 2015-12-20 09:40:57 +01:00
Nils Fenner
efda47a226
close audio output in destructor 2015-12-20 09:40:57 +01:00
tux3
cbe8104576
Fix bad handling of empty avatars
Fixes #2694
2015-12-19 16:28:57 +01:00
tux3
b5cdfb3dce
Implement new SQLCipher based database and history
qTox will automatically import the old history on startup.

This new database code is much more robust.
It is very resilient and will not corrupt or disappear after a crash or
power failure, unlike the old code.
The on-disk database format is also much more compact now.

The database sync option in the advanced settings has been removed,
we know run many database operations asynchronously so performance
should not be a problem anymore, but we always ensure resiliency
in case of abrupt termination, so there is no tradeoff anymore.
2015-12-19 04:17:28 +01:00
tux3
ab8220c2cf
Remove stale TODO 2015-12-15 19:20:34 +01:00
tux3
cbade4bae6
Fix tiny memory leak on startup 2015-12-15 19:08:59 +01:00
tux3
63644050f3
Fix #2683
There is still an issue with the history keeping the old password, though
2015-12-14 23:27:12 +01:00
tux3
981588d630
Fix some avatars saved with the wrong name 2015-12-08 23:10:15 +01:00
tux3
9905042434
Fix wrong word in copypasted log message 2015-12-08 22:13:28 +01:00
tux3
b39f3eacb0
Clean unused getIDString() function 2015-12-05 19:09:20 +01:00
tux3
25ed3d4fba
Fix avatars for encrypted profiles
WARNING: Note that avatars for encrypted profiles are currently stored unencrypted!
2015-12-05 19:08:28 +01:00
tux3
a6bbd31b12
Retry sending audio frames on sync/lock error 2015-12-05 03:22:00 +01:00
tux3
333d10e6d5
Log type of audio send error 2015-12-05 02:35:11 +01:00
tux3
7f5f807bde
Fix filter audio
Fixes #2504

Fixes #2517

Fixes #1565
2015-12-04 18:20:47 +01:00
tux3
37075dbfb5
Improve video quality
Double the allowed bitrate, this is especially noticeable on desktop streaming. Desktop streaming is still completely broken, with what looks like iframes silently getting dropped on a regular basis.

Retry 5 times to send a frame when there's an internal toxav lock sync error, this allows us to drop way less frames.
2015-12-04 12:53:58 +01:00
tux3
db52ef6e6a
Disable buggy automatic bitrate adjustements
For some users on poor connections, toxav would suggest lower and lower bitratres until reaching zero and disabling audio/video entirely, toxav would then not raise the bitrate back and the only way to re-enable audio/video would have been to change A/V sources or restart the call

We now log toxav's recommendation, but ignore it
2015-11-14 23:51:30 +01:00
Zetok Zalbavar
cfea4675d7
Don't show in debug output nicks
They can contain personal info.
2015-11-14 20:11:37 +00:00
tux3
523e419adf
Fix theoritical A/V deadlock
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.
2015-11-08 00:32:32 +01:00
tux3
7dc608818c
Automatic AV bitrate management
Makes progress on #2134
2015-11-06 23:05:51 +01:00
tux3
d41a578735
Fix crash on audio -> video call promotion
We just ignore it and not show the received video for now.
Fixes #2505
2015-11-06 20:47:42 +01:00
tux3
b4754c6ac2
Fix inconsistent noexcept in toxcall.cpp 2015-11-06 01:49:54 +01:00
tux3
f107858252
Properly exit CoreAV thread 2015-10-25 13:53:04 +01:00
tux3
c902543ae4
Fix call race leading to deadlock and memory leak
A call cancel/accepted race was locking up both UI and AV threads, while the stream thread was shoveling more and more video frames on the AV thread's event queue
2015-10-25 00:17:45 +02:00
tux3
a776579732
Don't assert if a call dies while we answer it
This error condition only happens when a peer cancels its outgoing call in the middle of us answering it. We can simply ignore the error and things should nicely fall back into place. Since this race should be pretty rare in normal usage, it's nice to leave a log message, as it might mean we're being fuzzed.

We can prograssively replace more of those asserts by fallbacks and log messages now that everything has been shown to work fine, and the race conditions are harmless.

I feel like writing a novel today. Good thing nobody looks at these!
2015-10-24 21:41:19 +02:00
tux3
37e2d2e75f
CoreAV: Fix BlockingQueued connections deadlock
Having a deadlock problem? The solution is more locks!
2015-10-24 15:35:08 +02:00
tux3
c0d8703368
Properly signal when we stop sending video
And properly handle toxav happily delivering things out of order,
like firing a video frame callback right after a callback setting the bitrate to 0,
when the peer sent these commands in the right order
2015-10-24 04:26:39 +02:00
tux3
aaf04a80db
Remove some debug output 2015-10-24 02:46:34 +02:00
tux3
1dc7e4cca5
Add 45s call ringing timeout 2015-10-24 01:53:10 +02:00
tux3
8d2ae07c9f
Revert "Delete CoreAV from the Core thread"
This reverts commit 1f758efc2f.
2015-10-23 20:05:35 +02:00
tux3
ae243b2089
Delete CoreAV's timer from the CoreAV thread 2015-10-23 20:05:30 +02:00
tux3
1f758efc2f
Delete CoreAV from the Core thread
Since it was created there

Fixes #2457
2015-10-23 19:42:39 +02:00
tux3
4d9aeeec39 Fix bitrate callback to match toxav update 2015-10-23 17:52:46 +02:00
tux3
6dc91b156a Use actual mutexes for CameraSource
That homemade spinlock thing was insane, VTune says we were spending 1.5s spinning for no reason when openning a device for example
2015-10-23 17:52:46 +02:00
tux3
477554ffba Clean up callback hell between AV UI and CoreAV 2015-10-23 17:52:46 +02:00
tux3
a505e06f83 Multithread CoreAV
This is a little less insane, gives an overall 2x speedup on debug builds video calls
2015-10-23 17:52:45 +02:00
tux3
41e0212f77 Cleanup UI/CoreAV interface 2015-10-23 17:52:45 +02:00
tux3
73a4f40744 Fix call start/call invite race condition
Would result in an assert failure
2015-10-23 17:52:45 +02:00
tux3
1db17ae1ec Fix crash due to erase/remove typo
A race condition would result in trying to remove an element that didn't exist, and thus erasing end (undefined behavior) instead of erasing [end, end) (no-op)
2015-10-23 17:52:45 +02:00
tux3
f45256baf1 Implement group calls 2015-10-23 17:52:45 +02:00
tux3
6cbd507ca8 Clean up dead code in CoreAV 2015-10-23 17:39:08 +02:00
tux3
69b8a90277 Implement video calls 2015-10-23 17:39:08 +02:00
tux3
e0aa8dd4a2 Implement audio calls 2015-10-23 17:39:08 +02:00
tux3
2b888ddc05 Better data structure for tox calls 2015-10-23 17:19:16 +02:00
tux3
512dc8de2d Implement basic call logic
We can now make New AV calls, but without any audio/video. Just opening a link.
2015-10-23 17:09:53 +02:00
tux3
dbbc702c60 Strip out old AV code 2015-10-23 17:02:01 +02:00
Nils Fenner
33e54b841a
Merge pull request #2415 from antis81:ngf/mic 2015-10-21 22:19:37 +02:00
Zetok Zalbavar
c07aee18ad
Merge pull request #2346 from PKEv:save_avatar_in_DB
Save avatar in DB
add import avatars
update delete avatar action
correct import avatar for user without history
add multithreaded
make import run once
2015-10-20 21:01:20 +01:00
Nils Fenner
b7cf4df13f
Get rid of static methods and bugs 2015-10-20 03:46:44 +02:00
Nils Fenner
2a2cba3cf2
remove outcommented code 2015-10-18 22:21:08 +02:00
TheSpiritXIII
dc2c6532a5
Audio: Fix unclosed audio when hanging up 2015-10-18 22:21:08 +02:00
TheSpiritXIII
bbbd450b6a
Audio: Only open mic when requested 2015-10-18 22:21:08 +02:00
TheSpiritXIII
a311b96376
Audio: Open output only when necessary 2015-10-18 22:21:08 +02:00
agilob
7117083e86
Merge remote-tracking branch 'origin/new_video_view' 2015-10-18 20:55:01 +01:00
PKEv
e5a5074f91 make import run once
and rename function
2015-10-18 22:15:49 +03:00
PKEv
ec5e9c7350 correct import avatar for user without history 2015-10-18 16:50:00 +03:00
PKev
dd975c38eb Save avatar in DB
Partially addresses an issue #1656
2015-10-14 22:16:59 +03:00
agilob
7c6ac40d21
add debugging messages to camerasource, code reformatting to make it more readable and ogranized better 2015-10-11 07:38:44 +01:00
Impyy
98c21f3832 Added a context menu to edit/remove the avatar 2015-10-05 22:03:31 +02:00
tux3
c0e2b91fe8
Fix #2310 caused by #2309 2015-09-27 23:45:02 +02:00
Impyy
c49ce6208e Load user status from data file 2015-09-25 20:56:11 +02:00
tux3
6229e045f2
Merge branch 'pr2223'
Fixes #659
2015-09-14 19:51:10 +02:00
PKEv
564b32eb7c save alias 2015-09-14 20:10:35 +03:00
tux3
8fbc0c8b59
Remove some debug output fluff 2015-09-06 00:11:47 +02:00
Zetok Zalbavar
06611d618e
Revert changes from merge of #2092 pull request
That pull request made qTox crash in a number of ways, with no quick fix
available.

Hopefully there will be a way to fix crash, so that this commit could be
reverted, and fix applied.
2015-08-30 21:28:53 +01:00
agilob
d6b176d955
Merge remote-tracking branch 'TheSpirit/requests'
merge awaiting friend requests, fix formatting conflict
2015-08-30 14:25:46 +01:00
TheSpiritXIII
2043908e15 Remove dialog for group invites 2015-08-21 10:32:00 -04:00
Zetok Zalbavar
2088c26028
Better wording for accepting / rejecting avatars 2015-07-28 11:11:58 +01:00
Jookia
7fab49d665 core: TOX_ERR_NEW_LOAD_BAD_FORMAT is non-fatal.
This fixes errors from save migrations between versions and architectures.
2015-07-12 23:58:40 +10:00
PKev
4682814442 fix the names in the history
fix #1943 #1787
2015-06-30 16:56:38 +03:00
tux3
645b1e5566
Fix raciness of encryption API
And make it saner by not having one global password that has to be set before encrypting/decrypting, which is as racy and poorly designed as it gets

Fixes #1917 's immediate symtoms, which some potential for other regressions due to the mess that is encrypted persistence currently
2015-06-27 21:14:35 +02:00
tux3
2ab55568f2
Make the video code a singleton, fix multithreading bugs
There can now only be one CameraSource running.

Video frames are decoded in their own thread, and then converted by users in the user's threads.
The CameraSource API is entirely thread-safe and controls the video decoding thread.

The video device only stays open as long as there are users subscribed to the CameraSource.

We use a dangerous combination of spinlocks and memory fences to keep things synchronized.
2015-06-26 18:34:48 +02:00
TheSpiritXIII
858b005567 Circles: Fix memory leaks and extraneous saving 2015-06-26 10:54:49 +02:00
TheSpiritXIII
c662c0aa92 Update activity on friendship, fix category friend removing (circles and activity) 2015-06-26 10:54:49 +02:00
TheSpiritXIII
ac2263b3e8 Save circle settings after each modification 2015-06-26 10:54:00 +02:00
Daniel Hrabovcak
e0b9e81938 Minor circle widget base class cleanup 2015-06-26 10:54:00 +02:00
tux3
aeb9a7f62f
Fix some warnings 2015-06-08 11:46:38 +02:00
tux3
7513725a3d
Fix wrong assert 2015-06-06 22:11:54 +02:00
tux3
89e9b18cf3
Better checks before cleanupCall 2015-06-06 21:57:09 +02:00
tux3
d76fb459cf
Fix #1817 2015-06-06 21:09:32 +02:00
tux3
adad71e565
Merge branch 'encrypted_settings' 2015-06-06 20:18:00 +02:00
tux3
13bea16292
Add encrypting profile settings serializer
We now use a binary serialized format to save space and allow clean encryption of the user settings.
All the settings can (and should) be edited from the GUI so there is no loss of functionnality.

It can still read the old .ini format, and will seamlessly upgrade to the new format.

Fixes #1810
2015-06-06 20:15:50 +02:00
tux3
6d8bcbb9cd
Workaround for #1817 2015-06-06 17:04:56 +02:00
Zetok Zalbavar
67e9aeec63
Fix incorrect copyright headers
The qTox Project is not associated with the Tox Project in any way, with the
exception of "qTox" using the Tox Projet's "toxcore" collection of libraries.
In particular, the Tox Projet does not own copyright over the qTox Project's
"qTox" collection of software, source code, and assets.
The qTox Project's assets are under the sole copyright of the qTox
contributors, and no partiular rights are granted to the Tox Project.
2015-06-06 14:51:28 +01:00
tux3
bb999456da
Remove some unused defines 2015-06-06 01:59:28 +02:00
tux3
20f254651d
Reorganize files 2015-06-06 01:44:47 +02:00
tux3
3656b1e5eb
Improve avatar caching reliability 2015-06-05 23:41:14 +02:00
tux3
0fd489fbba
Properly kill all calls in ~Core 2015-06-05 18:53:27 +02:00
tux3
1ded562d9d
Clean Settings interface 2015-06-05 16:24:47 +02:00
tux3
e5ddd9d0cf Consider empty encrypted history as nonexistent 2015-06-04 21:34:13 +02:00
tux3
2dbf2e54b1 Implement restarting toxcore 2015-06-04 21:34:13 +02:00
tux3
5f94f33117 Use profile password for all encryption 2015-06-04 21:34:13 +02:00
tux3
4e2983817f Fix crash in ~Core 2015-06-04 21:34:13 +02:00
tux3
42a7efb053 Implement the -p option 2015-06-04 21:34:13 +02:00
tux3
21db31c215 Implement profile deletion 2015-06-04 21:34:13 +02:00
tux3
f7546a731f Fix profile saving on exit 2015-06-04 21:34:13 +02:00
tux3
abf65a5060 Remove deprecated profile management functions 2015-06-04 21:34:12 +02:00
tux3
840fd7dc40 Cleanly create new profiles 2015-06-04 21:34:12 +02:00
tux3
032c561e62 Make Nexus own and start the LoginScreen
And start implementing some of the required methods to make Core, LoginScreen and Nexus use Profile
2015-06-04 21:34:12 +02:00
tux3
c180fa15de
Fix nullptr dereference on A/V timeout 2015-06-03 19:33:17 +02:00
tux3
d53b426750 Replace OpenCV with FFmpeg 2015-06-03 02:10:52 +02:00
tux3
b3ce364d5c
Merge branch 'pr1758' 2015-06-01 16:56:47 +02:00
PKEv
0791c64efd Correct_after_cpp_check
style and typos
2015-05-30 23:44:56 +03:00
tux3
6409b273a4
Re-apply toxcore tox_new compat patch 2015-05-29 17:29:25 +02:00
Ansa89
22d1ab34f9 Also call 'tox_add_tcp_relay()' 2015-05-29 14:54:26 +02:00
tux3
2db617bc6f
Recover if tox fails to start 2015-05-25 22:37:19 +02:00
Сухарик
fe7dc995d6 use toxcore error codes 2015-05-25 23:09:09 +03:00
tux3
c3e70d6c59 Revert "Updated for latest toxcore api"
This reverts commit 7c8334bca9.
2015-05-25 20:23:06 +02:00
Daniel Hrabovcak
051a88a7e8 For range loops 2015-05-25 12:38:52 -04:00
Daniel Hrabovcak
992e648f64 Fix compile issues 2015-05-25 12:32:34 -04:00
Daniel Hrabovcak
399f2c9fef Merge https://github.com/tux3/qTox 2015-05-25 12:20:05 -04:00
Daniel Hrabovcak
bd2f8b5db5 Add al delete to group leave 2015-05-25 12:19:56 -04:00
Daniel Hrabovcak
fb707fe1f1 Group audio not being reset 2015-05-25 11:58:54 -04:00
saneki
7c8334bca9 Updated for latest toxcore api 2015-05-25 08:08:47 -05:00
Zetok Zalbavar
1403ee970b
Improve error message when profile is alrady used
I.e. don't imply that profile belongs to same user, since it is possible
that multiple users are using qTox.
2015-05-25 09:39:47 +01:00
Zetok Zalbavar
227c061ea1
Code consistency fixes → 's/ToxID/ToxId/'
Since consistency in code is most important, 'ToxId' is used
for code, whereas 'Tox ID' anywhere outside of code.

Also fixed wrong comments in core.h:
* qTox gets only public key of a grouchat peer, not their
  Tox ID
* qTox tries to return full address (Tox ID) or public key
2015-05-23 20:15:41 +01:00
tux3
9fdf382d7b
Correctly send avatar hashs as file_idS 2015-05-19 12:34:38 +02:00
marcel
f96db5a761 replaced ToxID struct with ToxId class. 2015-05-17 22:55:50 +02:00
marcel
66dc368662 added isActiveProfile function and fixed a typo 2015-05-17 22:48:24 +02:00
marcel
2ffabb19ec Renamed function isMine to isActiveProfile.
As an user can have multiple profiles where each profile has its own
Tox ID the name isMine is not very accurate.
2015-05-17 22:26:56 +02:00
marcel
a41765a58d added documentation 2015-05-17 21:54:21 +02:00
marcel
08e6004361 added separate class for ToxId 2015-05-17 21:23:52 +02:00
tux3
1bdb84825d
Remove the unused struct DhtServer 2015-05-16 13:25:52 +02:00
tux3
15cc64069f
Fix #1634 2015-05-12 18:39:38 +02:00
tux3
76cbaf18f1
Fix incorrect copyright headers
The qTox Project is not associated with the Tox Project in any ways, with the exception of "qTox" using the Tox Projet's "toxcore" collection of libraries.
In particular, the Tox Projet does not own copyright over the qTox Project's "qTox" collection of software, source code, and assets.
The qTox Project's assets are under the sole copyright of the qTox contributors, and no partiular rights are granted to the Tox Project.
2015-05-12 04:12:53 +02:00
tux3
600401a606
Fix vol/mic toggle buttons
They were suffering from double-connection syndrom, and the way muting worked was now conflicting with how the output sound level setting works

Fixes #1442
2015-05-12 02:45:04 +02:00
tux3
4a40269698
Implement and enable the audio sliders
It was about time
2015-05-12 01:27:32 +02:00
tux3
7cb98b90c7
Faster file transfers (up to 160ms/s)
By reducing the maximum interval between two tox_iterate calls during file transfers to 10ms. This results in reasonnable amounts of extra CPU% used. If the only file transfers are avatars, CoreFile allows sleeping for up to 50ms. If there are currently no FT, up to 1000ms.

We now take the minimum sleeping interval asked by toxcore, toxav, and CoreFile
2015-05-11 20:41:19 +02:00
tux3
ef688f6097
Remove pointless or potentially sensitive log messages 2015-05-11 16:06:12 +02:00
sudden6
1506a9a30e Change log messages to fit new log format 2015-05-11 15:37:56 +02:00
tux3
2ff2414627
Log size of received avatar data 2015-05-10 00:56:20 +02:00
tux3
67e09de085
Save memory with lazy loading
Load the setting's cameria preview opengl context lazily and destroy it when done. Only preallocte Core's video buffer if we have any calls active, free up when all calls are done
2015-05-10 00:05:30 +02:00
tux3
a01e0db7ba
Fix some memory leaks and mismatches 2015-05-09 22:35:58 +02:00
tux3
bb5f2e066d
Fix crash on video calls lowered to audio calls
Toxcore would incorrectly report the call as a video call in the call settings, and then crash while trying to send a video frame in the audio call. We workaround that by using another API that correctly reports the type of the call
2015-05-09 22:35:15 +02:00
tux3
e79d40e356
Merge branch 'pr1446'
Conflicts:
	src/chatlog/chatlog.cpp
	src/chatlog/content/filetransferwidget.cpp
	src/core.cpp
	src/core/coreencryption.cpp
	src/toxdns.cpp
	src/widget/form/chatform.cpp
	src/widget/form/genericchatform.cpp
	src/widget/friendwidget.cpp
	src/widget/widget.cpp
2015-05-07 22:00:50 +02:00
tux3
66cb02d1c3
Fix qTox Android build 2015-04-27 17:59:44 +02:00
tux3
25329d3a57
Remove redundant QString ctor
Thanks to @Papierkorb
2015-04-27 03:16:52 +02:00
tux3
f0c01a4f64
Fix typo in error message
Thanks to @Selena-Gomez for finding this.
2015-04-27 02:11:50 +02:00
tux3
200af0fd49
Better error messages for friend requests 2015-04-25 22:07:40 +02:00
tux3
d962148dd0
Fix more save corruption bugs
askProfiles is a really dangerous function. Awful things happen when the user closes that message box. We now prevent it from being closed in more places
2015-04-25 21:33:15 +02:00
tux3
7eb9370c0b
Disable the GUI until a profile is active
There are small instants on startup and while profile switching during which no profile is loaded but the GUI could still receive events, e.g. between two modal windows. Disable the GUI to prevent that.
2015-04-25 21:05:29 +02:00
tux3
e682dada3b
Fix save corruption bug
Don't just let the user close the profile select box and continue with an empty value. We would create a new profile and save it back on top of the previous encrypted profile
2015-04-25 20:20:53 +02:00
tux3
e74e29e4fb
Cleanly cancel broken file transfers 2015-04-25 19:18:46 +02:00
tux3
cdb2bad7c3
Signal broken file transfers 2015-04-25 17:12:49 +02:00
tux3
c6e60c4c77
Remove some CoreFile debug output 2015-04-25 16:59:29 +02:00
tux3
bd5eebbc2e
Cache avatar sending, fix image file preview
- Add AvatarBroadcaster, in charge of making sure our friends have our avatar without spamming file transfers

- Fix file sending code not closing the file after transfer, which prevented file previews, and make the QFile a shared_ptr to fix the obvious memory leak

Some small additions to Core to support AvatarBroadcaster
2015-04-25 16:51:58 +02:00
tux3
9ece486e22
Prevent possible uninitialized read of status
For unhandled values of Status, we want to return, not continue with an uninitialized value.
2015-04-25 02:28:57 +02:00
tux3
0e65d150e3
Don't show call buttons in text-only groupchats
I'm not sure why there are text-only groupchats in the first place, but that's fixed.
2015-04-25 01:50:35 +02:00
tux3
9d3d17d05e
Avatar sending on top of file transfers 2015-04-25 01:26:52 +02:00
tux3
5662120c51
Show Tox ID instead of blank names 2015-04-24 21:34:24 +02:00
tux3
42d7a7bcef
Assert profile locks before writing
This fixes the potential edge case where a frozen then unfrozen qTox instance could have its locks delete by a new qTox instance.

We now check that we still own our locks, restoring them if we can, before saving
2015-04-24 21:05:19 +02:00
tux3
05b6f1985d
Allow to start multiple instances with -p
Starting a new instance with the -p option will force it to start a new instance with the given profile instead of bringing an eventual existing instance to the foreground

Two instances can not run with the same profiles, the profile locking code will ensure that. A user who likes to live dangerously could manually delete the lock to force two instances on the same profile, but such an hypothetical user would be asking for it.

If a qTox instance starts and becomes owner of the IPC shared memory on its first try, it considers itself the only running freshly-started instance, and deletes any possibly stale lock before starting up. This should be fine in the vast majority of cases, but if an existing qTox instance freezes for a long enough time to lose ownership of the IPC and a new instance is started without first killing the frozen one, the frozen instance's lock will be deleted as stale by the new one. If the frozen instance subsequentely unfreezes, it will be running on a profile for which it doesn't have a lock, which could cause trouble. This is an intentionaly allowed edge case, the alternative being a stale lock staying forever until removed manually. A potential solution not yet implemented would be to check that the lock is still actually present before attempting any write.
2015-04-24 19:43:39 +02:00
tux3
bbf75aefb9
Profile locking 2015-04-24 18:53:19 +02:00
tux3
13d98da1bc
Correctly separate received actions from messages 2015-04-24 15:57:01 +02:00
Zetok Zalbavar
92f3b6a20f Code style improvements 2015-04-24 15:43:57 +02:00
tux3
9dedd22bb2
Port file transfers to the new API
Parallel, extremely large, and other edge case transfers have not been tested, but the common path should work well.
2015-04-24 15:31:30 +02:00
tux3
e4859efe18
Refactor Core
Refactor Core's file transfer callbacks into their CoreFile class and files

Move all core*.{h|cpp} into a core/ folder
2015-04-24 02:32:09 +02:00