dm: прямой обмен сообщениями (DM) + soundtouch + архитектура звонков

- src/dm/: dm_core/dm_crypto/dm_mailbox — прямой обмен сообщениями (DM)
- lib/soundtouch-master/: vendored SoundTouch (изменение темпа/высоты аудио)
- doc/dm_arch.md, doc/chat_call_arch.md: архитектура DM и звонков
- tests: test_dm.c, test_dm_e2e.c
- chat: рефакторинг chat_* модулей, member_sync, invite_build
- chatgui/chatgui-android: синхронизация с новым API чата
- lib/u_async, debug_config, utun_instance: сопутствующие изменения
This commit is contained in:
evgeny committed 2026-09-15 21:09:17 +03:00
1 parent 761f64cf76
commit 73fe99b33f
123 files changed
+14095 -1270

No files matched your search

+4 -3
View File
@@ -103,7 +103,7 @@ void ConnMonitorWindow::hideEvent(QHideEvent* event) {
void ConnMonitorWindow::onTimerTick() {
if (m_details->textCursor().hasSelection()) return;
if (QApplication::mouseButtons()) return;
gui_bridge_post_uasync_fn(chat_core_collect_conn_list_trampoline, nullptr);
gui_bridge_post_uasync_fn(chat_core_collect_conn_list_trampoline, gui_bridge_get_inst());
if (m_selectedNodeId) requestMetricsForSelected();
}
@@ -115,9 +115,10 @@ void ConnMonitorWindow::onConnSelected(QListWidgetItem* current, QListWidgetItem
}
void ConnMonitorWindow::requestMetricsForSelected() {
void* arg = u_malloc(sizeof(uint64_t));
struct chat_node_arg* arg = (struct chat_node_arg*)u_malloc(sizeof(struct chat_node_arg));
if (!arg) return;
memcpy(arg, &m_selectedNodeId, sizeof(uint64_t));
arg->inst = gui_bridge_get_inst();
arg->node_id = m_selectedNodeId;
gui_bridge_post_uasync_fn(chat_core_collect_conn_metrics_trampoline, arg);
}