This commit is contained in:
Green Sky 2024-10-25 13:46:00 +02:00
parent a9d8c070bc
commit 92740c8dbe
No known key found for this signature in database
19 changed files with 59 additions and 49 deletions

View File

@ -61,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
@ -71,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

@ -1 +1 @@
Subproject commit 2801fc21fbd6f69479f6638ab1725d00238698f8
Subproject commit ed640ba08cf8452e202ed567cad48ad396b8e1db

@ -1 +1 @@
Subproject commit a0c3336f375c8eb3a146fd183850418a216c8e7e
Subproject commit 30146fc5a56ed671c8862437f8658cfe4fbb1fac

@ -1 +1 @@
Subproject commit 7cd6a2b0de13820a75b9028ae90595cd48a2231c
Subproject commit 49fda84aff7a3466cd244013fbf67624c6b71450

@ -1 +1 @@
Subproject commit 9a4df12d68373cd19adddde2364843eeac51c28d
Subproject commit a38c3a33055e91c9d9ceed507c0e3c2f63dc7fa4

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

@ -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

@ -24,6 +24,7 @@ MainScreen::MainScreen(SimpleConfigModel&& conf_, SDL_Renderer* renderer_, Theme
mts(rmm),
sm(os),
tc(save_path, save_password),
tel(tc, std::cout),
tpi(tc.getTox()),
ad(tc),
tcm(cr, tc, tc),
@ -50,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);

View File

@ -65,8 +65,8 @@ struct MainScreen final : public Screen {
StreamManager sm;
ToxEventLogger tel{std::cout};
ToxClient tc;
ToxEventLogger tel;
ToxPrivateImpl tpi;
AutoDirty ad;
ToxContactModel2 tcm;

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};