From 4e4bae92470ae27fe8c0d30c531ba31029208ecc Mon Sep 17 00:00:00 2001 From: overtake Date: Wed, 13 Jan 2021 15:13:13 +0300 Subject: [PATCH 1/2] - added SQueueLocalObject --- .../Source/SSignalKit/SQueueLocalObject.h | 19 +++++++++ .../Source/SSignalKit/SQueueLocalObject.m | 40 +++++++++++++++++++ .../SSignalKit/Source/SSignalKit/SSignalKit.h | 1 + .../Sources/OngoingCallThreadLocalContext.mm | 2 +- 4 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 submodules/SSignalKit/SSignalKit/Source/SSignalKit/SQueueLocalObject.h create mode 100644 submodules/SSignalKit/SSignalKit/Source/SSignalKit/SQueueLocalObject.m diff --git a/submodules/SSignalKit/SSignalKit/Source/SSignalKit/SQueueLocalObject.h b/submodules/SSignalKit/SSignalKit/Source/SSignalKit/SQueueLocalObject.h new file mode 100644 index 0000000000..85fdfd2c59 --- /dev/null +++ b/submodules/SSignalKit/SSignalKit/Source/SSignalKit/SQueueLocalObject.h @@ -0,0 +1,19 @@ +// +// SQueueLocalObject.h +// SSignalKit +// +// Created by Mikhail Filimonov on 13.01.2021. +// Copyright © 2021 Telegram. All rights reserved. +// + +#import +#import +NS_ASSUME_NONNULL_BEGIN + +@interface SQueueLocalObject : NSObject +-(id)initWithQueue:(SQueue *)queue generate:(id (^)(void))next; +-(void)with:(void (^)(id object))f; +@end + +NS_ASSUME_NONNULL_END + diff --git a/submodules/SSignalKit/SSignalKit/Source/SSignalKit/SQueueLocalObject.m b/submodules/SSignalKit/SSignalKit/Source/SSignalKit/SQueueLocalObject.m new file mode 100644 index 0000000000..019a50a695 --- /dev/null +++ b/submodules/SSignalKit/SSignalKit/Source/SSignalKit/SQueueLocalObject.m @@ -0,0 +1,40 @@ +// +// SQueueLocalObject.m +// SSignalKit +// +// Created by Mikhail Filimonov on 13.01.2021. +// Copyright © 2021 Telegram. All rights reserved. +// + +#import "SQueueLocalObject.h" + +@implementation SQueueLocalObject { + SQueue *queue; + id valueRef; +} +-(id)initWithQueue:(SQueue *)queue generate:(id _Nonnull (^)(void))next { + if (self = [super init]) { + self->queue = queue; + [queue dispatch:^{ + self->valueRef = next(); + }]; + } + return self; +} + +-(void)with:(void (^)(id object))f { + [self->queue dispatch:^{ + f(self->valueRef); + }]; +} + +-(void)dealloc { + __block id value = self->valueRef; + self->valueRef = nil; + [queue dispatch:^{ + value = nil; + }]; +} + +@end + diff --git a/submodules/SSignalKit/SSignalKit/Source/SSignalKit/SSignalKit.h b/submodules/SSignalKit/SSignalKit/Source/SSignalKit/SSignalKit.h index 2c6679ff51..2cc7c97980 100644 --- a/submodules/SSignalKit/SSignalKit/Source/SSignalKit/SSignalKit.h +++ b/submodules/SSignalKit/SSignalKit/Source/SSignalKit/SSignalKit.h @@ -35,3 +35,4 @@ FOUNDATION_EXPORT const unsigned char SSignalKitVersionString[]; #import #import #import +#import diff --git a/submodules/TgVoipWebrtc/Sources/OngoingCallThreadLocalContext.mm b/submodules/TgVoipWebrtc/Sources/OngoingCallThreadLocalContext.mm index f1895427c3..675e851e14 100644 --- a/submodules/TgVoipWebrtc/Sources/OngoingCallThreadLocalContext.mm +++ b/submodules/TgVoipWebrtc/Sources/OngoingCallThreadLocalContext.mm @@ -1379,7 +1379,7 @@ static void processJoinPayload(tgcalls::GroupJoinPayload &payload, void (^ _Nonn completion(remoteRenderer); } else { GLVideoView *remoteRenderer = [[GLVideoView alloc] initWithFrame:CGRectZero]; - + // [remoteRenderer setVideoContentMode:kCAGravityResizeAspectFill]; std::shared_ptr> sink = [remoteRenderer getSink]; [queue dispatch:^{ From 079bdb3f765b6b558151abefaa39326b67b8f6ec Mon Sep 17 00:00:00 2001 From: overtake Date: Mon, 1 Feb 2021 17:06:39 +0400 Subject: [PATCH 2/2] [skip ci] --- .../Sources/InvitationLinks.swift | 116 +++++++++--------- submodules/TgVoipWebrtc/tgcalls | 2 +- 2 files changed, 59 insertions(+), 59 deletions(-) diff --git a/submodules/TelegramCore/Sources/InvitationLinks.swift b/submodules/TelegramCore/Sources/InvitationLinks.swift index 7a5eb1434f..fc9491db1b 100644 --- a/submodules/TelegramCore/Sources/InvitationLinks.swift +++ b/submodules/TelegramCore/Sources/InvitationLinks.swift @@ -6,64 +6,64 @@ import MtProtoKit import SyncCore - -public func ensuredExistingPeerExportedInvitation(account: Account, peerId: PeerId, revokeExisted: Bool = false) -> Signal { - return account.postbox.transaction { transaction -> Signal in - if let peer = transaction.getPeer(peerId), let inputPeer = apiInputPeer(peer) { - if let _ = peer as? TelegramChannel { - if let cachedData = transaction.getPeerCachedData(peerId: peerId) as? CachedChannelData, cachedData.exportedInvitation != nil && !revokeExisted { - return .single(cachedData.exportedInvitation) - } else { - return account.network.request(Api.functions.messages.exportChatInvite(peer: inputPeer)) - |> retryRequest - |> mapToSignal { result -> Signal in - return account.postbox.transaction { transaction -> ExportedInvitation? in - if let invitation = ExportedInvitation(apiExportedInvite: result) { - transaction.updatePeerCachedData(peerIds: Set([peerId]), update: { _, current in - if let current = current as? CachedChannelData { - return current.withUpdatedExportedInvitation(invitation) - } else { - return CachedChannelData().withUpdatedExportedInvitation(invitation) - } - }) - return invitation - } else { - return nil - } - } - } - } - } else if let _ = peer as? TelegramGroup { - if let cachedData = transaction.getPeerCachedData(peerId: peerId) as? CachedGroupData, cachedData.exportedInvitation != nil && !revokeExisted { - return .single(cachedData.exportedInvitation) - } else { - return account.network.request(Api.functions.messages.exportChatInvite(peer: inputPeer)) - |> retryRequest - |> mapToSignal { result -> Signal in - return account.postbox.transaction { transaction -> ExportedInvitation? in - if let invitation = ExportedInvitation(apiExportedInvite: result) { - transaction.updatePeerCachedData(peerIds: Set([peerId]), update: { _, current in - if let current = current as? CachedGroupData { - return current.withUpdatedExportedInvitation(invitation) - } else { - return current - } - }) - return invitation - } else { - return nil - } - } - } - } - } else { - return .complete() - } - } else { - return .complete() - } - } |> switchToLatest -} +// +//public func ensuredExistingPeerExportedInvitation(account: Account, peerId: PeerId, revokeExisted: Bool = false) -> Signal { +// return account.postbox.transaction { transaction -> Signal in +// if let peer = transaction.getPeer(peerId), let inputPeer = apiInputPeer(peer) { +// if let _ = peer as? TelegramChannel { +// if let cachedData = transaction.getPeerCachedData(peerId: peerId) as? CachedChannelData, cachedData.exportedInvitation != nil && !revokeExisted { +// return .single(cachedData.exportedInvitation) +// } else { +// return account.network.request(Api.functions.messages.exportChatInvite(peer: inputPeer)) +// |> retryRequest +// |> mapToSignal { result -> Signal in +// return account.postbox.transaction { transaction -> ExportedInvitation? in +// if let invitation = ExportedInvitation(apiExportedInvite: result) { +// transaction.updatePeerCachedData(peerIds: Set([peerId]), update: { _, current in +// if let current = current as? CachedChannelData { +// return current.withUpdatedExportedInvitation(invitation) +// } else { +// return CachedChannelData().withUpdatedExportedInvitation(invitation) +// } +// }) +// return invitation +// } else { +// return nil +// } +// } +// } +// } +// } else if let _ = peer as? TelegramGroup { +// if let cachedData = transaction.getPeerCachedData(peerId: peerId) as? CachedGroupData, cachedData.exportedInvitation != nil && !revokeExisted { +// return .single(cachedData.exportedInvitation) +// } else { +// return account.network.request(Api.functions.messages.exportChatInvite(peer: inputPeer)) +// |> retryRequest +// |> mapToSignal { result -> Signal in +// return account.postbox.transaction { transaction -> ExportedInvitation? in +// if let invitation = ExportedInvitation(apiExportedInvite: result) { +// transaction.updatePeerCachedData(peerIds: Set([peerId]), update: { _, current in +// if let current = current as? CachedGroupData { +// return current.withUpdatedExportedInvitation(invitation) +// } else { +// return current +// } +// }) +// return invitation +// } else { +// return nil +// } +// } +// } +// } +// } else { +// return .complete() +// } +// } else { +// return .complete() +// } +// } |> switchToLatest +//} public func revokePersistentPeerExportedInvitation(account: Account, peerId: PeerId) -> Signal { diff --git a/submodules/TgVoipWebrtc/tgcalls b/submodules/TgVoipWebrtc/tgcalls index 1c6747b73f..ff6c6f97a6 160000 --- a/submodules/TgVoipWebrtc/tgcalls +++ b/submodules/TgVoipWebrtc/tgcalls @@ -1 +1 @@ -Subproject commit 1c6747b73fd19043d7bd382ea208ba78314fed00 +Subproject commit ff6c6f97a6546049f0543bb5322789348e119b9d