savoirfairelinux issueshttps://git.jami.net/groups/savoirfairelinux/-/issues2022-10-04T14:52:33Zhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/753daemon-agent: double free2022-10-04T14:52:33ZSébastien Blindaemon-agent: double freeAgent fails since a few days
```
=================================================================
==168118==ERROR: AddressSanitizer: attempting double-free on 0x615000898580 in thread T0:
#0 0x7f6efe80651f in operator delete(void*...Agent fails since a few days
```
=================================================================
==168118==ERROR: AddressSanitizer: attempting double-free on 0x615000898580 in thread T0:
#0 0x7f6efe80651f in operator delete(void*) ../../../../src/libsanitizer/asan/asan_new_delete.cc:165
#1 0x7f6efcb65d2b in __gnu_cxx::new_allocator<std::function<void ()> >::deallocate(std::function<void ()>*, unsigned long) /usr/include/c++/9/ext/new_allocator.h:128
#2 0x7f6efcb65d2b in std::allocator_traits<std::allocator<std::function<void ()> > >::deallocate(std::allocator<std::function<void ()> >&, std::function<void ()>*, unsigned long) /usr/include/c++/9/bits/alloc_traits.h:469
#3 0x7f6efcb65d2b in std::_Deque_base<std::function<void ()>, std::allocator<std::function<void ()> > >::_M_deallocate_node(std::function<void ()>*) /usr/include/c++/9/bits/stl_deque.h:627
#4 0x7f6efcb65d2b in std::_Deque_base<std::function<void ()>, std::allocator<std::function<void ()> > >::_M_destroy_nodes(std::function<void ()>**, std::function<void ()>**) /usr/include/c++/9/bits/stl_deque.h:761
#5 0x7f6efcb65d2b in std::_Deque_base<std::function<void ()>, std::allocator<std::function<void ()> > >::~_Deque_base() /usr/include/c++/9/bits/stl_deque.h:683
#6 0x7f6efcb65d2b in std::deque<std::function<void ()>, std::allocator<std::function<void ()> > >::~deque() /usr/include/c++/9/bits/stl_deque.h:1072
#7 0x7f6efcb65d2b in std::queue<std::function<void ()>, std::deque<std::function<void ()>, std::allocator<std::function<void ()> > > >::~queue() /usr/include/c++/9/bits/stl_queue.h:96
#8 0x7f6efcb65d2b in dht::ThreadPool::stop() /foo/contrib/native/opendht/src/thread_pool.cpp:109
#9 0x7f6efcb65db6 in dht::ThreadPool::join() /foo/contrib/native/opendht/src/thread_pool.cpp:116
#10 0x7f6efbe54ae3 in jami::Manager::finish() /foo/src/manager.cpp:902
#11 0x7f6efbfe6d01 in DRing::fini() /foo/src/ring_api.cpp:99
#12 0x7f6efb01d8a6 (/lib/x86_64-linux-gnu/libc.so.6+0x468a6)
#13 0x7f6efb01da5f in exit (/lib/x86_64-linux-gnu/libc.so.6+0x46a5f)
#14 0x5597e4a2b8aa in c_handler /foo/contrib/native/guile/libguile/continuations.c:441
#15 0x5597e49f757c in catch_post_unwind_handler /foo/contrib/native/guile/libguile/throw.c:118
#16 0x5597e49873e0 in scm_c_with_exception_handler /foo/contrib/native/guile/libguile/exceptions.c:167
#17 0x5597e49f779c in scm_c_catch /foo/contrib/native/guile/libguile/throw.c:168
#18 0x5597e4a2b69b in scm_i_with_continuation_barrier /foo/contrib/native/guile/libguile/continuations.c:368
#19 0x5597e4a2b979 in scm_c_with_continuation_barrier /foo/contrib/native/guile/libguile/continuations.c:464
#20 0x5597e49f53da in with_guile /foo/contrib/native/guile/libguile/threads.c:645
#21 0x7f6efe6484c1 in GC_call_with_stack_base extra/../misc.c:2106
#22 0x5597e49f54d3 in scm_i_with_guile /foo/contrib/native/guile/libguile/threads.c:688
#23 0x5597e49f5517 in scm_with_guile /foo/contrib/native/guile/libguile/threads.c:694
#24 0x5597e48bf474 in main src/main.cpp:94
#25 0x7f6efaffb082 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24082)
#26 0x5597e48beded in _start (/foo/test/agent/.libs/agent.exe+0xc8ded)
0x615000898580 is located 0 bytes inside of 512-byte region [0x615000898580,0x615000898780)
freed by thread T0 here:
#0 0x7f6efe80651f in operator delete(void*) ../../../../src/libsanitizer/asan/asan_new_delete.cc:165
#1 0x7f6efcb65f94 in __gnu_cxx::new_allocator<std::function<void ()> >::deallocate(std::function<void ()>*, unsigned long) /usr/include/c++/9/ext/new_allocator.h:128
#2 0x7f6efcb65f94 in std::allocator_traits<std::allocator<std::function<void ()> > >::deallocate(std::allocator<std::function<void ()> >&, std::function<void ()>*, unsigned long) /usr/include/c++/9/bits/alloc_traits.h:469
#3 0x7f6efcb65f94 in std::_Deque_base<std::function<void ()>, std::allocator<std::function<void ()> > >::_M_deallocate_node(std::function<void ()>*) /usr/include/c++/9/bits/stl_deque.h:627
#4 0x7f6efcb65f94 in std::_Deque_base<std::function<void ()>, std::allocator<std::function<void ()> > >::_M_destroy_nodes(std::function<void ()>**, std::function<void ()>**) /usr/include/c++/9/bits/stl_deque.h:761
#5 0x7f6efcb65f94 in std::_Deque_base<std::function<void ()>, std::allocator<std::function<void ()> > >::~_Deque_base() /usr/include/c++/9/bits/stl_deque.h:683
#6 0x7f6efcb65f94 in std::deque<std::function<void ()>, std::allocator<std::function<void ()> > >::~deque() /usr/include/c++/9/bits/stl_deque.h:1072
#7 0x7f6efcb65f94 in std::queue<std::function<void ()>, std::deque<std::function<void ()>, std::allocator<std::function<void ()> > > >::~queue() /usr/include/c++/9/bits/stl_queue.h:96
#8 0x7f6efcb65f94 in dht::ThreadPool::~ThreadPool() /foo/contrib/native/opendht/src/thread_pool.cpp:55
#9 0x7f6efb01d8a6 (/lib/x86_64-linux-gnu/libc.so.6+0x468a6)
previously allocated by thread T0 here:
#0 0x7f6efe805587 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cc:104
#1 0x7f6efcb66979 in __gnu_cxx::new_allocator<std::function<void ()> >::allocate(unsigned long, void const*) /usr/include/c++/9/ext/new_allocator.h:114
#2 0x7f6efcb66979 in std::allocator_traits<std::allocator<std::function<void ()> > >::allocate(std::allocator<std::function<void ()> >&, unsigned long) /usr/include/c++/9/bits/alloc_traits.h:443
#3 0x7f6efcb66979 in std::_Deque_base<std::function<void ()>, std::allocator<std::function<void ()> > >::_M_allocate_node() /usr/include/c++/9/bits/stl_deque.h:620
#4 0x7f6efcb66979 in std::_Deque_base<std::function<void ()>, std::allocator<std::function<void ()> > >::_M_create_nodes(std::function<void ()>**, std::function<void ()>**) /usr/include/c++/9/bits/stl_deque.h:745
#5 0x7f6efcb66979 in std::_Deque_base<std::function<void ()>, std::allocator<std::function<void ()> > >::_M_initialize_map(unsigned long) /usr/include/c++/9/bits/stl_deque.h:719
#6 0x7f6efcb65b44 in std::_Deque_base<std::function<void ()>, std::allocator<std::function<void ()> > >::_Deque_base() /usr/include/c++/9/bits/stl_deque.h:510
#7 0x7f6efcb65b44 in std::deque<std::function<void ()>, std::allocator<std::function<void ()> > >::deque() /usr/include/c++/9/bits/stl_deque.h:915
#8 0x7f6efcb65b44 in std::queue<std::function<void ()>, std::deque<std::function<void ()>, std::allocator<std::function<void ()> > > >::queue<std::deque<std::function<void ()>, std::allocator<std::function<void ()> > >, void>() /usr/include/c++/9/bits/stl_queue.h:161
#9 0x7f6efcb65b44 in dht::ThreadPool::stop() /foo/contrib/native/opendht/src/thread_pool.cpp:109
#10 0x7f6efcb65e69 in dht::ThreadPool::join() /foo/contrib/native/opendht/src/thread_pool.cpp:116
#11 0x7f6efcb65e69 in dht::ThreadPool::~ThreadPool() /foo/contrib/native/opendht/src/thread_pool.cpp:57
#12 0x7f6efb01d8a6 (/lib/x86_64-linux-gnu/libc.so.6+0x468a6)
SUMMARY: AddressSanitizer: double-free ../../../../src/libsanitizer/asan/asan_new_delete.cc:165 in operator delete(void*)
==168118==ABORTING
```https://git.jami.net/savoirfairelinux/jami-project/-/issues/1486Video preview before you accept the call: Should your own(?) video be used2022-10-02T09:58:55ZElysVideo preview before you accept the call: Should your own(?) video be usedNew feature: https://git.jami.net/savoirfairelinux/jami-project/-/issues/1309
It does not make if I make a call Windows 10 -> Android or Android -> Windows 10:
The windows 10 client of Jami always shows the video preview of the Windows...New feature: https://git.jami.net/savoirfairelinux/jami-project/-/issues/1309
It does not make if I make a call Windows 10 -> Android or Android -> Windows 10:
The windows 10 client of Jami always shows the video preview of the Windows 10 user.
Shouldn't it always show the video preview of the caller?https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/764Sporadic crash in ConnectionManager2022-10-01T10:12:41ZSébastien BlinSporadic crash in ConnectionManager```
[New Thread 0x7fffa67fc640 (LWP 2962014)]
Thread 74 "ut_conversation" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff527fc640 (LWP 2960732)]
0x0000000000ad98cb in pj_grp_lock_acquire ()
(gdb) bt
#0 0x000000...```
[New Thread 0x7fffa67fc640 (LWP 2962014)]
Thread 74 "ut_conversation" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff527fc640 (LWP 2960732)]
0x0000000000ad98cb in pj_grp_lock_acquire ()
(gdb) bt
#0 0x0000000000ad98cb in pj_grp_lock_acquire ()
#1 0x000000000059edfd in jami::IceLock::lock (this=0x7fff527f8c58) at ice_transport.cpp:92
#2 0x000000000059edc3 in jami::IceLock::IceLock (this=0x7fff527f8c58, strans=0x0) at ice_transport.cpp:87
#3 0x00000000005975ff in jami::IceTransport::isStarted (this=0x7fff4c16c180) at ice_transport.cpp:1173
#4 0x0000000000598370 in jami::IceTransport::stop (this=0x7fff4c16c180) at ice_transport.cpp:1354
#5 0x0000000000a0f0c2 in jami::ConnectionManager::Impl::removeUnusedConnections (this=0x7fffd81108d0, deviceId=...) at jamidht/connectionmanager.cpp:83
#6 0x0000000000a0f442 in jami::ConnectionManager::Impl::shutdown (this=0x7fffd81108d0) at jamidht/connectionmanager.cpp:109
#7 0x00000000009ff484 in jami::ConnectionManager::~ConnectionManager (this=0x7fffd80c90e0, __in_chrg=<optimized out>) at jamidht/connectionmanager.cpp:1038
#8 0x00000000007c9060 in std::default_delete<jami::ConnectionManager>::operator() (this=0x1d2fcd0, __ptr=0x7fffd80c90e0) at /usr/include/c++/12/bits/unique_ptr.h:95
#9 0x00000000007bce44 in std::unique_ptr<jami::ConnectionManager, std::default_delete<jami::ConnectionManager> >::~unique_ptr (this=0x1d2fcd0, __in_chrg=<optimized out>) at /usr/include/c++/12/bits/unique_ptr.h:396
#10 0x00000000007fd1be in std::_Destroy<std::unique_ptr<jami::ConnectionManager, std::default_delete<jami::ConnectionManager> > > (__pointer=0x1d2fcd0) at /usr/include/c++/12/bits/stl_construct.h:151
#11 0x00000000007fceac in std::allocator_traits<std::allocator<void> >::destroy<std::unique_ptr<jami::ConnectionManager, std::default_delete<jami::ConnectionManager> > > (__p=0x1d2fcd0) at /usr/include/c++/12/bits/alloc_traits.h:648
#12 0x00000000007fc641 in std::_Sp_counted_ptr_inplace<std::unique_ptr<jami::ConnectionManager, std::default_delete<jami::ConnectionManager> >, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_M_dispose (this=0x1d2fcc0)
at /usr/include/c++/12/bits/shared_ptr_base.h:613
#13 0x0000000000484521 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x1d2fcc0) at /usr/include/c++/12/bits/shared_ptr_base.h:346
#14 0x000000000048544b in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (this=0x1d2ac48, __in_chrg=<optimized out>) at /usr/include/c++/12/bits/shared_ptr_base.h:1071
#15 0x00000000007b8cfe in std::__shared_ptr<std::unique_ptr<jami::ConnectionManager, std::default_delete<jami::ConnectionManager> >, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr (this=0x1d2ac40, __in_chrg=<optimized out>)
at /usr/include/c++/12/bits/shared_ptr_base.h:1524
#16 0x00000000007b8d1a in std::shared_ptr<std::unique_ptr<jami::ConnectionManager, std::default_delete<jami::ConnectionManager> > >::~shared_ptr (this=0x1d2ac40, __in_chrg=<optimized out>) at /usr/include/c++/12/bits/shared_ptr.h:175
#17 0x0000000000771096 in ~<lambda>(void) (this=0x1d2ac40, __in_chrg=<optimized out>) at jamidht/jamiaccount.cpp:359
#18 0x00000000007a8185 in std::_Function_base::_Base_manager<jami::JamiAccount::shutdownConnections()::<lambda()> >::_M_destroy(std::_Any_data &, std::false_type) (__victim=...) at /usr/include/c++/12/bits/std_function.h:175
#19 0x000000000079e5a3 in std::_Function_base::_Base_manager<jami::JamiAccount::shutdownConnections()::<lambda()> >::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation) (__dest=..., __source=...,
__op=std::__destroy_functor) at /usr/include/c++/12/bits/std_function.h:203
#20 0x0000000000798712 in std::_Function_handler<void(), jami::JamiAccount::shutdownConnections()::<lambda()> >::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation) (__dest=..., __source=...,
__op=std::__destroy_functor) at /usr/include/c++/12/bits/std_function.h:282
#21 0x0000000000b17766 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<dht::ThreadPool::run(std::function<void ()>&&)::{lambda()#1}> > >::_M_run() ()
#22 0x00007ffff6adbb03 in execute_native_thread_routine () from /lib64/libstdc++.so.6
#23 0x00007ffff668ce2d in start_thread () from /lib64/libc.so.6
#24 0x00007ffff67121b0 in clone3 () from /lib64/libc.so.6
(gdb)
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/821Account combobox show unread count2022-10-01T10:12:12ZSébastien BlinAccount combobox show unread countSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-client-macos/-/issues/300Media Change - use requestMediaChange instead of deprecated APIs2022-09-30T13:17:57ZMohamed ChibaniMedia Change - use requestMediaChange instead of deprecated APIsequestMediaChange API allows modifying many attributes of the media (add new media, mute media, change source, ...). This API must be used instead of the deprecated APIs such as muteMedia and switchInput.equestMediaChange API allows modifying many attributes of the media (add new media, mute media, change source, ...). This API must be used instead of the deprecated APIs such as muteMedia and switchInput.https://git.jami.net/savoirfairelinux/jami-web/-/issues/3Set up formatter2022-09-28T19:04:08ZCharlie DuquetteSet up formatterSimon TranSimon Tranhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/758crash when blocking contact when account is not active2022-09-27T14:21:38ZKateryna Kostiukcrash when blocking contact when account is not activesteps to reproduce
- create a Jami account with contacts
- disable account
- block a contact
- Jami crashed
Reproduced on iOS and macOS qt-client
Additionally, after those steps, iOS crashed every time when trying to enable account.steps to reproduce
- create a Jami account with contacts
- disable account
- block a contact
- Jami crashed
Reproduced on iOS and macOS qt-client
Additionally, after those steps, iOS crashed every time when trying to enable account.Kateryna KostiukKateryna Kostiukhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/478Video Split: create participantsmodel per call2022-09-26T17:35:44ZAline Gondim SantosVideo Split: create participantsmodel per callBackloghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/767[regression] jamid segfault on specific series of D-Bus API actions2022-09-26T03:23:57ZMaxim Cournoyer[regression] jamid segfault on specific series of D-Bus API actionsThis appears to be a regression introduced with the latest release, 20220825.0828.c10f01f.
It was found while running the `jami-provisioning` test from GNU Guix, which aims to cover that the `jami-service-type` works as expected (see: h...This appears to be a regression introduced with the latest release, 20220825.0828.c10f01f.
It was found while running the `jami-provisioning` test from GNU Guix, which aims to cover that the `jami-service-type` works as expected (see: https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/tests/telephony.scm#n305).
The following steps are making use of the Guix System Jami service available actions, but should reproduce using any D-Bus client.
1. herd status jami -> pid is X
1. herd ban-contact jami 1dbcb0f5f37324228235564b79f2b9737e9a008f
1. herd disable-account jami f3345f2775ddfe07a4b0d95daea111d15fbc1199
1. herd enable-account jami f3345f2775ddfe07a4b0d95daea111d15fbc1199 ->
herd: exception caught while executing 'enable-account' on service 'jami':
dbus "method failed with error" "org.freedesktop.DBus.Error.NoReply" ("Message recipient disconnected from message bus without replying")
1. herd status jami -> pid is Y (respawned)
Backtrace of the segfault (sorry, no symbols):
```
Thread 25 "jamid" received signal SIGSEGV, Segmentation fault.
0x00007f7f1422a82c in ?? () from target:/gnu/store/5b7bd0n5xg766zq4dgr0xi44akhvvn35-libjami-20220825.0828.c10f01f/lib/libring.so.0
(gdb) bt
#0 0x00007f7f1422a82c in ?? ()
from target:/gnu/store/5b7bd0n5xg766zq4dgr0xi44akhvvn35-libjami-20220825.0828.c10f01f/lib/libring.so.0
#1 0x00007f7f1422ac1a in ?? ()
from target:/gnu/store/5b7bd0n5xg766zq4dgr0xi44akhvvn35-libjami-20220825.0828.c10f01f/lib/libring.so.0
#2 0x00007f7f1422832c in ?? ()
from target:/gnu/store/5b7bd0n5xg766zq4dgr0xi44akhvvn35-libjami-20220825.0828.c10f01f/lib/libring.so.0
#3 0x00007f7f14215df3 in ?? ()
from target:/gnu/store/5b7bd0n5xg766zq4dgr0xi44akhvvn35-libjami-20220825.0828.c10f01f/lib/libring.so.0
#4 0x00007f7f1418d161 in ?? ()
from target:/gnu/store/5b7bd0n5xg766zq4dgr0xi44akhvvn35-libjami-20220825.0828.c10f01f/lib/libring.so.0
#5 0x00007f7f141be6c8 in ?? ()
from target:/gnu/store/5b7bd0n5xg766zq4dgr0xi44akhvvn35-libjami-20220825.0828.c10f01f/lib/libring.so.0
#6 0x00007f7f141b4fe0 in ?? ()
from target:/gnu/store/5b7bd0n5xg766zq4dgr0xi44akhvvn35-libjami-20220825.0828.c10f01f/lib/libring.so.0
#7 0x00007f7f141ae876 in ?? ()
from target:/gnu/store/5b7bd0n5xg766zq4dgr0xi44akhvvn35-libjami-20220825.0828.c10f01f/lib/libring.so.0
#8 0x00007f7f13264e61 in ?? ()
from target:/gnu/store/vrfk0sb70vp76lyp3rlp0wmp47fmzpma-opendht-2.4.10/lib/libopendht.so.2
#9 0x00007f7f10392bf0 in ?? ()
from target:/gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/libstdc++.so.6
#10 0x00007f7f105d9d7e in ?? ()
from target:/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/libpthread.so.0
#11 0x00007f7f10086eff in clone ()
from target:/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/libc.so.6
```https://git.jami.net/savoirfairelinux/jami-client-android/-/issues/1103Jami doesn't detect the proper camera quality in "video resolution" setting o...2022-09-24T17:48:19ZRichard BranchesJami doesn't detect the proper camera quality in "video resolution" setting on AndroidTV/GoogleTVI've got two webcams, one has a maximum resolution of 720p, the other has a maximum resolution of 2K.
When I connect the 720p one, Jami shows 480p, 720p, 1080p and 4K, but the webcam obviously doesn't support the last two.
When I conne...I've got two webcams, one has a maximum resolution of 720p, the other has a maximum resolution of 2K.
When I connect the 720p one, Jami shows 480p, 720p, 1080p and 4K, but the webcam obviously doesn't support the last two.
When I connect the 2K one, Jami shows 480p, 720p and 1080p, ignoring the 2K resolution, looks like the 2K resolution option hasn't been implemented in the code or the app is not detecting it.
Jami should properly detect the maximum resolution of each webcam and show the correct quality options that we can choose.
The latest stable version of the app was installed from the Play Store on a Realme 4K stick with Google TV 11.https://git.jami.net/savoirfairelinux/jami-web/-/issues/9Implement call 1 to 12022-09-23T16:11:34ZCharlie DuquetteImplement call 1 to 1https://git.jami.net/savoirfairelinux/jami-web/-/issues/16Conversation : Create2022-09-23T16:08:31ZCharlie DuquetteConversation : Createhttps://git.jami.net/savoirfairelinux/jami-web/-/issues/5ICE → WebRTC (PImpl)2022-09-23T16:08:30ZCharlie DuquetteICE → WebRTC (PImpl)https://git.jami.net/savoirfairelinux/jami-web/-/issues/7FFmpeg → WebRTC (PImpl)2022-09-23T16:08:24ZCharlie DuquetteFFmpeg → WebRTC (PImpl)https://git.jami.net/savoirfairelinux/jami-web/-/issues/17Conversation : Remove2022-09-23T16:08:15ZCharlie DuquetteConversation : Removehttps://git.jami.net/savoirfairelinux/jami-web/-/issues/6SIP → WebRTC (PImpl)2022-09-23T16:08:14ZCharlie DuquetteSIP → WebRTC (PImpl)https://git.jami.net/savoirfairelinux/jami-web/-/issues/19Conversation : communication / chat2022-09-23T16:07:59ZCharlie DuquetteConversation : communication / chathttps://git.jami.net/savoirfairelinux/jami-web/-/issues/20File transfert2022-09-23T16:07:36ZCharlie DuquetteFile transferthttps://git.jami.net/savoirfairelinux/jami-web/-/issues/21Submit initial report2022-09-23T08:42:49ZCharlie DuquetteSubmit initial reporthttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/837Settings > General > `Select audio input device` → `Application theme`, and o...2022-09-22T19:15:12ZovariSettings > General > `Select audio input device` → `Application theme`, and others1. Should tooltip/popup `Select audio input device` be changed to `Application theme` when the mouse hovers above `Application theme` drop-down?<br>
![Select audio input device → Application theme](/uploads/a85fcdb6da4d09f7c5fd61223f55c0...1. Should tooltip/popup `Select audio input device` be changed to `Application theme` when the mouse hovers above `Application theme` drop-down?<br>
![Select audio input device → Application theme](/uploads/a85fcdb6da4d09f7c5fd61223f55c0a5/image.png)
1. Should a tooltip/popup show when mouse hovers above `Always record calls` toggle?<br>
![Always record calls](/uploads/ff4ad53d50df2d91f8e2f7b867896aba/image.png)
1. Should a tooltip/popup show when mouse hovers above `User interface language` drop-down?<br>
![User interface language](/uploads/2b6c1b9af397eb1542dd40b8c7ce7981/image.png)
1. Should a tooltip/popup show when mouse hovers above `Text zoom` textbox?
1. Should a tooltip/popup show when mouse hovers above `Layout` drop-down?
1. Should a tooltip/popup show when mouse hovers above `Always record calls` toggle?
1. Should a tooltip/popup show when mouse hovers above `Record call` toggle?
1. Should a tooltip/popup show when mouse hovers above `Quality` slider?
1. Should a tooltip/popup show when mouse hovers above `Open logs` button?
Thank you
Jami Version: 202209091508