Compare commits

..

7 Commits

Author SHA1 Message Date
765340a727 update to new tox interface
Some checks failed
ContinuousDelivery / linux-ubuntu (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android]) (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Has been cancelled
ContinuousDelivery / windows (push) Has been cancelled
ContinuousDelivery / windows-asan (push) Has been cancelled
ContinuousIntegration / linux (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android]) (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Has been cancelled
ContinuousIntegration / macos (push) Has been cancelled
ContinuousIntegration / windows (push) Has been cancelled
ContinuousDelivery / release (push) Has been cancelled
2024-11-06 10:52:33 +01:00
72d3575670 more human readable
Some checks failed
ContinuousDelivery / linux-ubuntu (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android]) (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Has been cancelled
ContinuousDelivery / windows (push) Has been cancelled
ContinuousDelivery / windows-asan (push) Has been cancelled
ContinuousIntegration / linux (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android]) (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Has been cancelled
ContinuousIntegration / macos (push) Has been cancelled
ContinuousIntegration / windows (push) Has been cancelled
ContinuousDelivery / release (push) Has been cancelled
2024-10-28 23:17:52 +01:00
31352ed06a forgot to write id
Some checks failed
ContinuousDelivery / linux-ubuntu (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android]) (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Has been cancelled
ContinuousDelivery / windows (push) Has been cancelled
ContinuousDelivery / windows-asan (push) Has been cancelled
ContinuousIntegration / linux (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android]) (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Has been cancelled
ContinuousIntegration / macos (push) Has been cancelled
ContinuousIntegration / windows (push) Has been cancelled
ContinuousDelivery / release (push) Has been cancelled
2024-10-27 15:32:04 +01:00
2d96139d4a prep message serl for file objects
Some checks are pending
ContinuousDelivery / linux-ubuntu (push) Waiting to run
ContinuousDelivery / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Waiting to run
ContinuousDelivery / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android]) (push) Waiting to run
ContinuousDelivery / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Waiting to run
ContinuousDelivery / windows (push) Waiting to run
ContinuousDelivery / windows-asan (push) Waiting to run
ContinuousDelivery / release (push) Blocked by required conditions
ContinuousIntegration / linux (push) Waiting to run
ContinuousIntegration / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Waiting to run
ContinuousIntegration / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android]) (push) Waiting to run
ContinuousIntegration / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Waiting to run
ContinuousIntegration / macos (push) Waiting to run
ContinuousIntegration / windows (push) Waiting to run
2024-10-27 15:09:06 +01:00
92740c8dbe use sr
Some checks failed
ContinuousDelivery / linux-ubuntu (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android]) (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Has been cancelled
ContinuousDelivery / windows (push) Has been cancelled
ContinuousDelivery / windows-asan (push) Has been cancelled
ContinuousIntegration / linux (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android]) (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Has been cancelled
ContinuousIntegration / macos (push) Has been cancelled
ContinuousIntegration / windows (push) Has been cancelled
ContinuousDelivery / release (push) Has been cancelled
2024-10-25 13:46:00 +02:00
a9d8c070bc enable arm32 in the ci/cd
Some checks failed
ContinuousDelivery / linux-ubuntu (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android]) (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Has been cancelled
ContinuousDelivery / windows (push) Has been cancelled
ContinuousDelivery / windows-asan (push) Has been cancelled
ContinuousIntegration / linux (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android]) (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Has been cancelled
ContinuousIntegration / macos (push) Has been cancelled
ContinuousIntegration / windows (push) Has been cancelled
ContinuousDelivery / release (push) Has been cancelled
2024-10-19 11:24:09 +02:00
f93602e524 update sdl to latest
Some checks are pending
ContinuousDelivery / linux-ubuntu (push) Waiting to run
ContinuousDelivery / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Waiting to run
ContinuousDelivery / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Waiting to run
ContinuousDelivery / windows (push) Waiting to run
ContinuousDelivery / windows-asan (push) Waiting to run
ContinuousDelivery / release (push) Blocked by required conditions
ContinuousIntegration / linux (push) Waiting to run
ContinuousIntegration / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android]) (push) Waiting to run
ContinuousIntegration / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android]) (push) Waiting to run
ContinuousIntegration / macos (push) Waiting to run
ContinuousIntegration / windows (push) Waiting to run
2024-10-18 17:46:52 +02:00
28 changed files with 99 additions and 188 deletions

View File

@ -64,6 +64,8 @@ jobs:
strategy:
matrix:
platform:
- vcpkg_toolkit: arm-neon-android
ndk_abi: armeabi-v7a
- vcpkg_toolkit: arm64-android
ndk_abi: arm64-v8a
- vcpkg_toolkit: x64-android

View File

@ -38,6 +38,8 @@ jobs:
strategy:
matrix:
platform:
- vcpkg_toolkit: arm-neon-android
ndk_abi: armeabi-v7a
- vcpkg_toolkit: arm64-android
ndk_abi: arm64-v8a
- vcpkg_toolkit: x64-android
@ -59,9 +61,9 @@ jobs:
distribution: 'temurin'
java-version: '17'
- name: update vcpkg
run: |
git clone https://github.com/microsoft/vcpkg.git
#- name: update vcpkg
# run: |
# git clone https://github.com/microsoft/vcpkg.git
- name: Install Dependencies (host)
run: sudo apt update && sudo apt -y install cmake pkg-config nasm
@ -69,7 +71,8 @@ jobs:
- name: Install Dependencies (target)
env:
ANDROID_NDK_HOME: ${{steps.setup_ndk.outputs.ndk-path}}
run: vcpkg install --triplet ${{matrix.platform.vcpkg_toolkit}} --overlay-ports=vcpkg/ports libsodium opus libvpx libpng libjpeg-turbo
#run: vcpkg install --triplet ${{matrix.platform.vcpkg_toolkit}} --overlay-ports=vcpkg/ports libsodium opus libvpx libpng libjpeg-turbo
run: vcpkg install --triplet ${{matrix.platform.vcpkg_toolkit}} libsodium opus libvpx libpng libjpeg-turbo
# vcpkg scripts root /usr/local/share/vcpkg/scripts
- name: Configure CMake

View File

@ -25,7 +25,8 @@ if (NOT TARGET SDL3::SDL3)
#GIT_TAG 6e885d96193a4b0096fe7fed6d4e6c3e5f247283 # tip 09-09-2024
#GIT_TAG 9dd8859240703d886941733ad32c1dc6f50d64f0 # tip 19-09-2024
#GIT_TAG afdf325fb4090e93a124519d1a3bc1fbe0ba9025 # bad
GIT_TAG e292d1f5ace469f718d7b6b4dec8c28e37dcaa0e # tip 05-10-2024 (3.1.3)
#GIT_TAG e292d1f5ace469f718d7b6b4dec8c28e37dcaa0e # tip 05-10-2024 (3.1.3)
GIT_TAG 2654d5d48b8f764148a7c246fea85b32b1133578 # tip 18-10-2024
FIND_PACKAGE_ARGS # for the future
)

8
flake.lock generated
View File

@ -63,17 +63,17 @@
"sdl3": {
"flake": false,
"locked": {
"lastModified": 1728073678,
"narHash": "sha256-S7yRcLHMPgq6+gec8l+ESxp2dJ+6Po/UNsBUXptQzMQ=",
"lastModified": 1729218869,
"narHash": "sha256-0KrwC3Yrs1LHwT9SPvknDwPymNmksq6dixM4/KiFqFA=",
"owner": "libsdl-org",
"repo": "SDL",
"rev": "e292d1f5ace469f718d7b6b4dec8c28e37dcaa0e",
"rev": "2654d5d48b8f764148a7c246fea85b32b1133578",
"type": "github"
},
"original": {
"owner": "libsdl-org",
"repo": "SDL",
"rev": "e292d1f5ace469f718d7b6b4dec8c28e37dcaa0e",
"rev": "2654d5d48b8f764148a7c246fea85b32b1133578",
"type": "github"
}
},

View File

@ -11,7 +11,7 @@
flake = false;
};
sdl3 = {
url = "github:libsdl-org/SDL/e292d1f5ace469f718d7b6b4dec8c28e37dcaa0e"; # keep in sync this cmake
url = "github:libsdl-org/SDL/2654d5d48b8f764148a7c246fea85b32b1133578"; # keep in sync this cmake
flake = false;
};
sdl3_image = {

View File

@ -80,8 +80,6 @@ target_sources(tomato PUBLIC
./chat_gui/icons/group.cpp
./chat_gui/contact_list.hpp
./chat_gui/contact_list.cpp
./chat_gui/contact_tree.hpp
./chat_gui/contact_tree.cpp
./chat_gui/file_selector.hpp
./chat_gui/file_selector.cpp
./chat_gui/send_image_popup.hpp

View File

@ -2,21 +2,18 @@
#include "./tox_client.hpp"
// TODO: add more events
void AutoDirty::subscribe(void) {
_tc.subscribe(this, Tox_Event_Type::TOX_EVENT_SELF_CONNECTION_STATUS);
_tc.subscribe(this, Tox_Event_Type::TOX_EVENT_FRIEND_CONNECTION_STATUS);
_tc.subscribe(this, Tox_Event_Type::TOX_EVENT_FRIEND_REQUEST);
_tc.subscribe(this, Tox_Event_Type::TOX_EVENT_GROUP_INVITE);
_tc.subscribe(this, Tox_Event_Type::TOX_EVENT_GROUP_SELF_JOIN);
_tc.subscribe(this, Tox_Event_Type::TOX_EVENT_GROUP_PEER_JOIN);
_tc.subscribe(this, Tox_Event_Type::TOX_EVENT_GROUP_PEER_EXIT);
_tc.subscribe(this, Tox_Event_Type::TOX_EVENT_CONFERENCE_INVITE);
}
AutoDirty::AutoDirty(ToxClient& tc) : _tc(tc) {
subscribe();
AutoDirty::AutoDirty(ToxClient& tc) : _tc(tc), _tep_sr(_tc.newSubRef(this)) {
// TODO: add more events
_tep_sr
.subscribe(Tox_Event_Type::TOX_EVENT_SELF_CONNECTION_STATUS)
.subscribe(Tox_Event_Type::TOX_EVENT_FRIEND_CONNECTION_STATUS)
.subscribe(Tox_Event_Type::TOX_EVENT_FRIEND_REQUEST)
.subscribe(Tox_Event_Type::TOX_EVENT_GROUP_INVITE)
.subscribe(Tox_Event_Type::TOX_EVENT_GROUP_SELF_JOIN)
.subscribe(Tox_Event_Type::TOX_EVENT_GROUP_PEER_JOIN)
.subscribe(Tox_Event_Type::TOX_EVENT_GROUP_PEER_EXIT)
.subscribe(Tox_Event_Type::TOX_EVENT_CONFERENCE_INVITE)
;
}
bool AutoDirty::onToxEvent(const Tox_Event_Self_Connection_Status*) {

View File

@ -8,8 +8,7 @@ class ToxClient;
// sets ToxClient dirty on some events
class AutoDirty : public ToxEventI {
ToxClient& _tc;
void subscribe(void); // private
ToxEventProviderI::SubscriptionReference _tep_sr;
public:
AutoDirty(ToxClient& tc);

View File

@ -1,97 +0,0 @@
#include "./contact_tree.hpp"
#include <solanaceae/contact/components.hpp>
#include "./contact_list.hpp"
#include "entt/entity/entity.hpp"
#include <imgui/imgui.h>
namespace Components {
struct TagTreeViewOpen {};
};
ContactTreeWindow::ContactTreeWindow(Contact3Registry& cr, Theme& theme, ContactTextureCache& ctc) : _cr(cr), _theme(theme), _ctc(ctc) {
}
void ContactTreeWindow::render(void) {
//{ // main window menubar injection
// // assumes the window "tomato" was rendered already by cg
// if (ImGui::Begin("tomato")) {
// if (ImGui::BeginMenuBar()) {
// ImGui::Separator();
// if (ImGui::BeginMenu("Settings")) {
// if (ImGui::MenuItem("settings window", nullptr, _show_window)) {
// _show_window = !_show_window;
// }
// ImGui::EndMenu();
// }
// ImGui::EndMenuBar();
// }
// }
// ImGui::End();
//}
if (_show_window) {
if (ImGui::Begin("ContactTreeWindow", &_show_window)) {
if (ImGui::BeginTable("##table", 1, ImGuiTableFlags_None)) {
// first we need all root nodes
for (const auto [cv_root] : _cr.view<Contact::Components::TagRoot>().each()) {
ImGui::TableNextRow();
ImGui::PushID(entt::to_integral(cv_root));
ImGui::TableNextColumn();
Contact3Handle c_root {_cr, cv_root};
bool open = c_root.all_of<Components::TagTreeViewOpen>();
bool has_children = c_root.all_of<Contact::Components::ParentOf>();
// roots are usually no normal contacts
// they should display as a protocol or profile or account
// TODO: set some table background instead of full span selected?
if (renderContactBig(_theme, _ctc, c_root, 2, false, true)) {
// clicked, toggle open
if (open) {
c_root.remove<Components::TagTreeViewOpen>();
open = false;
} else {
c_root.emplace_or_replace<Components::TagTreeViewOpen>();
open = true;
}
}
if (open) {
// render children
ImGui::Indent();
if (c_root.all_of<Contact::Components::ParentOf>()) {
for (const auto cv_child : c_root.get<Contact::Components::ParentOf>().subs) {
ImGui::PushID(entt::to_integral(cv_child));
Contact3Handle c_child {_cr, cv_child};
renderContactBig(_theme, _ctc, c_child, 2);
ImGui::PopID();
}
} else {
// TODO: remove
ImGui::TableNextRow();
ImGui::TableNextColumn();
ImGui::TextDisabled("no parent of");
}
ImGui::Unindent();
}
ImGui::PopID();
}
ImGui::EndTable();
}
}
ImGui::End();
}
}

View File

@ -1,23 +0,0 @@
#pragma once
#include <solanaceae/contact/contact_model3.hpp>
#include "./texture_cache_defs.hpp"
// fwd
struct Theme;
class ContactTreeWindow {
bool _show_window {true};
Contact3Registry& _cr;
Theme& _theme;
ContactTextureCache& _ctc;
public:
ContactTreeWindow(Contact3Registry& cr, Theme& theme, ContactTextureCache& ctc);
void render(void);
};

View File

@ -1048,6 +1048,11 @@ void ChatGui4::renderMessageBodyText(Message3Registry& reg, const Message3 e) {
void ChatGui4::renderMessageBodyFile(Message3Registry& reg, const Message3 e) {
auto o = reg.get<Message::Components::MessageFileObject>(e).o;
if (!o) {
ImGui::TextDisabled("file message missing file object!");
return;
}
if (
!_show_chat_avatar_tf
&& (
@ -1347,10 +1352,27 @@ void ChatGui4::renderMessageBodyFile(Message3Registry& reg, const Message3 e) {
if (fts != nullptr) {
ImGui::SeparatorText("transfer stats");
ImGui::Text("rate up : %.1f Bytes/s", fts->rate_up);
ImGui::Text("rate down : %.1f Bytes/s", fts->rate_down);
ImGui::Text("total up : %lu Bytes", fts->total_up);
ImGui::Text("total down: %lu Bytes", fts->total_down);
{
const char* byte_suffix = "???";
int64_t byte_divider = sizeToHumanReadable(fts->rate_up, byte_suffix);
ImGui::Text("rate up : %.2f %s/s", fts->rate_up/byte_divider, byte_suffix);
}
{
const char* byte_suffix = "???";
int64_t byte_divider = sizeToHumanReadable(fts->rate_down, byte_suffix);
ImGui::Text("rate down : %.2f %s/s", fts->rate_down/byte_divider, byte_suffix);
}
{
const char* byte_suffix = "???";
int64_t byte_divider = sizeToHumanReadable(fts->total_up, byte_suffix);
ImGui::Text("total up : %.3f %s", double(fts->total_up)/byte_divider, byte_suffix);
}
{
const char* byte_suffix = "???";
int64_t byte_divider = sizeToHumanReadable(fts->total_down, byte_suffix);
ImGui::Text("total down: %.3f %s", double(fts->total_down)/byte_divider, byte_suffix);
}
}
ImGui::EndTooltip();
@ -1457,7 +1479,7 @@ void ChatGui4::pasteFile(const char* mime_type) {
size_t data_size = 0;
void* data = SDL_GetClipboardData(mime_type, &data_size);
std::cout << "CG: pasted image of size " << data_size << " mime " << mime_type << "\n";
std::cout << "CG: pasted image of size: " << data_size << " mimetype: " << mime_type << "\n";
_sip.sendMemory(
static_cast<const uint8_t*>(data), data_size,

View File

@ -27,10 +27,12 @@ StreamManager::Connection::Connection(
}
}
StreamManager::StreamManager(ObjectStore2& os) : _os(os) {
_os.subscribe(this, ObjectStore_Event::object_construct);
//_os.subscribe(this, ObjectStore_Event::object_update);
_os.subscribe(this, ObjectStore_Event::object_destroy);
StreamManager::StreamManager(ObjectStore2& os) : _os(os), _os_sr(_os.newSubRef(this)) {
_os_sr
.subscribe(ObjectStore_Event::object_construct)
//.subscribe(ObjectStore_Event::object_update)
.subscribe(ObjectStore_Event::object_destroy)
;
}
StreamManager::~StreamManager(void) {

View File

@ -57,6 +57,7 @@ namespace Components {
class StreamManager : protected ObjectStoreEventI {
friend class StreamManagerUI; // TODO: make this go away
ObjectStore2& _os;
ObjectStore2::SubscriptionReference _os_sr;
struct Connection {
ObjectHandle src;

View File

@ -20,10 +20,11 @@ MainScreen::MainScreen(SimpleConfigModel&& conf_, SDL_Renderer* renderer_, Theme
renderer(renderer_),
conf(std::move(conf_)),
rmm(cr),
msnj{cr, {}, {}},
msnj{cr, os, {}, {}},
mts(rmm),
sm(os),
tc(save_path, save_password),
tel(tc, std::cout),
tpi(tc.getTox()),
ad(tc),
tcm(cr, tc, tc),
@ -43,7 +44,6 @@ MainScreen::MainScreen(SimpleConfigModel&& conf_, SDL_Renderer* renderer_, Theme
mil(),
msg_tc(mil, sdlrtu),
cg(conf, os, rmm, cr, sdlrtu, contact_tc, msg_tc, theme),
ctw(cr, theme, contact_tc),
sw(conf),
osui(os),
tuiu(tc, conf),
@ -51,7 +51,7 @@ MainScreen::MainScreen(SimpleConfigModel&& conf_, SDL_Renderer* renderer_, Theme
smui(os, sm),
dvt(os, sm, sdlrtu)
{
tel.subscribeAll(tc);
tel.subscribeAll();
registerMessageComponents(msnj);
registerToxMessageComponents(msnj);
@ -358,7 +358,6 @@ Screen* MainScreen::render(float time_delta, bool&) {
const float msgtc_interval = msg_tc.update();
const float cg_interval = cg.render(time_delta); // render
ctw.render();
sw.render(); // render
osui.render();
tuiu.render(); // render

View File

@ -30,7 +30,6 @@
#include "./message_image_loader.hpp"
#include "./chat_gui4.hpp"
#include "./chat_gui/contact_tree.hpp"
#include "./chat_gui/settings_window.hpp"
#include "./object_store_ui.hpp"
#include "./tox_ui_utils.hpp"
@ -66,8 +65,8 @@ struct MainScreen final : public Screen {
StreamManager sm;
ToxEventLogger tel{std::cout};
ToxClient tc;
ToxEventLogger tel;
ToxPrivateImpl tpi;
AutoDirty ad;
ToxContactModel2 tcm;
@ -93,7 +92,6 @@ struct MainScreen final : public Screen {
TextureCache<void*, Message3Handle, MessageImageLoader> msg_tc;
ChatGui4 cg;
ContactTreeWindow ctw;
SettingsWindow sw;
ObjectStoreUI osui;
ToxUIUtils tuiu;

View File

@ -120,15 +120,17 @@ void MediaMetaInfoLoader::handleMessage(const Message3Handle& m) {
_rmm.throwEventUpdate(m);
}
MediaMetaInfoLoader::MediaMetaInfoLoader(RegistryMessageModelI& rmm) : _rmm(rmm) {
MediaMetaInfoLoader::MediaMetaInfoLoader(RegistryMessageModelI& rmm) : _rmm(rmm), _rmm_sr(_rmm.newSubRef(this)) {
// HACK: make them be added externally?
_image_loaders.push_back(std::make_unique<ImageLoaderWebP>());
_image_loaders.push_back(std::make_unique<ImageLoaderSDLBMP>());
_image_loaders.push_back(std::make_unique<ImageLoaderQOI>());
_image_loaders.push_back(std::make_unique<ImageLoaderSDLImage>());
_rmm.subscribe(this, RegistryMessageModel_Event::message_construct);
_rmm.subscribe(this, RegistryMessageModel_Event::message_updated);
_rmm_sr
.subscribe(RegistryMessageModel_Event::message_construct)
.subscribe(RegistryMessageModel_Event::message_updated)
;
}
MediaMetaInfoLoader::~MediaMetaInfoLoader(void) {

View File

@ -14,6 +14,7 @@ namespace Message::Components {
class MediaMetaInfoLoader : public RegistryMessageModelEventI {
protected:
RegistryMessageModelI& _rmm;
RegistryMessageModelI::SubscriptionReference _rmm_sr;
std::vector<std::unique_ptr<ImageLoaderI>> _image_loaders;

View File

@ -491,16 +491,18 @@ void ToxAVVoIPModel::handleEvent(const Events::FriendCallState& e) {
}
ToxAVVoIPModel::ToxAVVoIPModel(ObjectStore2& os, ToxAVI& av, Contact3Registry& cr, ToxContactModel2& tcm) :
_os(os), _av(av), _cr(cr), _tcm(tcm)
_os(os), _av(av), _av_sr(_av.newSubRef(this)), _cr(cr), _tcm(tcm)
{
_av.subscribe(this, ToxAV_Event::friend_call);
_av.subscribe(this, ToxAV_Event::friend_call_state);
_av.subscribe(this, ToxAV_Event::friend_audio_bitrate);
_av.subscribe(this, ToxAV_Event::friend_video_bitrate);
_av.subscribe(this, ToxAV_Event::friend_audio_frame);
_av.subscribe(this, ToxAV_Event::friend_video_frame);
_av.subscribe(this, ToxAV_Event::iterate_audio);
_av.subscribe(this, ToxAV_Event::iterate_video);
_av_sr
.subscribe(ToxAV_Event::friend_call)
.subscribe(ToxAV_Event::friend_call_state)
.subscribe(ToxAV_Event::friend_audio_bitrate)
.subscribe(ToxAV_Event::friend_video_bitrate)
.subscribe(ToxAV_Event::friend_audio_frame)
.subscribe(ToxAV_Event::friend_video_frame)
.subscribe(ToxAV_Event::iterate_audio)
.subscribe(ToxAV_Event::iterate_video)
;
// attach to all tox friend contacts

View File

@ -18,6 +18,7 @@ struct ToxAVCallVideoSink;
class ToxAVVoIPModel : protected ToxAVEventI, public VoIPModelI {
ObjectStore2& _os;
ToxAVI& _av;
ToxAVI::SubscriptionReference _av_sr;
Contact3Registry& _cr;
ToxContactModel2& _tcm;

View File

@ -33,9 +33,11 @@ ToxAvatarManager::ToxAvatarManager(
ObjectStore2& os,
Contact3Registry& cr,
ConfigModelI& conf
) : /*_rmm(rmm)*/ _os(os), _cr(cr), _conf(conf) {
_os.subscribe(this, ObjectStore_Event::object_construct);
_os.subscribe(this, ObjectStore_Event::object_update);
) : /*_rmm(rmm)*/ _os(os), _os_sr(_os.newSubRef(this)), _cr(cr), _conf(conf) {
_os_sr
.subscribe(ObjectStore_Event::object_construct)
.subscribe(ObjectStore_Event::object_update)
;
if (!_conf.has_string("ToxAvatarManager", "save_path")) {
// or on linux: $HOME/.config/tox/avatars/

View File

@ -14,6 +14,7 @@ struct ToxKey;
class ToxAvatarManager : public ObjectStoreEventI {
ObjectStore2& _os;
ObjectStore2::SubscriptionReference _os_sr;
Contact3Registry& _cr;
ConfigModelI& _conf;

View File

@ -30,8 +30,8 @@ ToxFriendFauxOfflineMessaging::ToxFriendFauxOfflineMessaging(
ToxContactModel2& tcm,
ToxI& t,
ToxEventProviderI& tep
) : _cr(cr), _rmm(rmm), _tcm(tcm), _t(t), _tep(tep) {
_tep.subscribe(this, Tox_Event_Type::TOX_EVENT_FRIEND_CONNECTION_STATUS);
) : _cr(cr), _rmm(rmm), _tcm(tcm), _t(t), _tep_sr(tep.newSubRef(this)) {
_tep_sr.subscribe(Tox_Event_Type::TOX_EVENT_FRIEND_CONNECTION_STATUS);
}
float ToxFriendFauxOfflineMessaging::tick(float time_delta) {

View File

@ -18,7 +18,7 @@ class ToxFriendFauxOfflineMessaging : public ToxEventI {
RegistryMessageModelI& _rmm;
ToxContactModel2& _tcm;
ToxI& _t;
ToxEventProviderI& _tep;
ToxEventProviderI::SubscriptionReference _tep_sr;
float _interval_timer{0.f};