kotatogram-desktop: add Darwin support

tdesktop and kotatogram both have macos builds, so it shouldn't be hard to make them available in nixpkgs
This commit is contained in:
Ilya Fedin
2022-03-17 02:26:24 +04:00
parent d3367563ef
commit 1a8e99e7f8
5 changed files with 639 additions and 26 deletions
@@ -33,6 +33,38 @@
, abseil-cpp
, microsoft_gsl
, wayland
, libicns
, Cocoa
, CoreFoundation
, CoreServices
, CoreText
, CoreGraphics
, CoreMedia
, OpenGL
, AudioUnit
, ApplicationServices
, Foundation
, AGL
, Security
, SystemConfiguration
, Carbon
, AudioToolbox
, VideoToolbox
, VideoDecodeAcceleration
, AVFoundation
, CoreAudio
, CoreVideo
, CoreMediaIO
, QuartzCore
, AppKit
, CoreWLAN
, WebKit
, IOKit
, GSS
, MediaPlayer
, IOSurface
, Metal
, MetalKit
, withWebKit ? false
}:
@@ -40,9 +72,20 @@ with lib;
let
tg_owt = callPackage ./tg_owt.nix {
abseil-cpp = abseil-cpp.override {
abseil-cpp = (abseil-cpp.override {
# abseil-cpp should use the same compiler
inherit stdenv;
cxxStandard = "20";
};
}).overrideAttrs (_: {
# https://github.com/NixOS/nixpkgs/issues/130963
NIX_LDFLAGS = optionalString stdenv.isDarwin "-lc++abi";
});
# tg_owt should use the same compiler
inherit stdenv;
inherit Cocoa AppKit IOKit IOSurface Foundation AVFoundation CoreMedia VideoToolbox
CoreGraphics CoreVideo OpenGL Metal MetalKit CoreFoundation ApplicationServices;
};
in
stdenv.mkDerivation rec {
@@ -59,35 +102,44 @@ stdenv.mkDerivation rec {
patches = [
./shortcuts-binary-path.patch
# let it build with nixpkgs 10.12 sdk
./kotato-10.12-sdk.patch
];
postPatch = ''
postPatch = optionalString stdenv.isLinux ''
substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioInputALSA.cpp \
--replace '"libasound.so.2"' '"${alsa-lib}/lib/libasound.so.2"'
substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioOutputALSA.cpp \
--replace '"libasound.so.2"' '"${alsa-lib}/lib/libasound.so.2"'
substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioPulse.cpp \
--replace '"libpulse.so.0"' '"${libpulseaudio}/lib/libpulse.so.0"'
'' + optionalString withWebKit ''
'' + optionalString (stdenv.isLinux && withWebKit) ''
substituteInPlace Telegram/lib_webview/webview/platform/linux/webview_linux_webkit_gtk.cpp \
--replace '"libwebkit2gtk-4.0.so.37"' '"${webkitgtk}/lib/libwebkit2gtk-4.0.so.37"'
'' + optionalString stdenv.isDarwin ''
substituteInPlace Telegram/CMakeLists.txt \
--replace 'COMMAND iconutil' 'COMMAND png2icns' \
--replace '--convert icns' "" \
--replace '--output AppIcon.icns' 'AppIcon.icns' \
--replace "\''${appicon_path}" "\''${appicon_path}/icon_16x16.png \''${appicon_path}/icon_32x32.png \''${appicon_path}/icon_128x128.png \''${appicon_path}/icon_256x256.png \''${appicon_path}/icon_512x512.png"
'';
# We want to run wrapProgram manually (with additional parameters)
dontWrapGApps = true;
dontWrapQtApps = withWebKit;
dontWrapGApps = stdenv.isLinux;
dontWrapQtApps = stdenv.isLinux && withWebKit;
nativeBuildInputs = [
pkg-config
cmake
ninja
# to build bundled libdispatch
clang
python3
wrapQtAppsHook
removeReferencesTo
] ++ optionals stdenv.isLinux [
# to build bundled libdispatch
clang
extra-cmake-modules
] ++ optionals withWebKit [
] ++ optionals (stdenv.isLinux && withWebKit) [
wrapGAppsHook
];
@@ -95,28 +147,64 @@ stdenv.mkDerivation rec {
qtbase
qtimageformats
qtsvg
kwayland
lz4
xxHash
ffmpeg
openalSoft
minizip
libopus
alsa-lib
libpulseaudio
range-v3
tl-expected
hunspell
glibmm
jemalloc
rnnoise
tg_owt
microsoft_gsl
] ++ optionals stdenv.isLinux [
kwayland
alsa-lib
libpulseaudio
hunspell
glibmm
jemalloc
wayland
] ++ optionals withWebKit [
] ++ optionals (stdenv.isLinux && withWebKit) [
webkitgtk
] ++ optionals stdenv.isDarwin [
Cocoa
CoreFoundation
CoreServices
CoreText
CoreGraphics
CoreMedia
OpenGL
AudioUnit
ApplicationServices
Foundation
AGL
Security
SystemConfiguration
Carbon
AudioToolbox
VideoToolbox
VideoDecodeAcceleration
AVFoundation
CoreAudio
CoreVideo
CoreMediaIO
QuartzCore
AppKit
CoreWLAN
WebKit
IOKit
GSS
MediaPlayer
IOSurface
Metal
libicns
];
# https://github.com/NixOS/nixpkgs/issues/130963
NIX_LDFLAGS = optionalString stdenv.isDarwin "-lc++abi";
enableParallelBuilding = true;
cmakeFlags = [
@@ -124,13 +212,20 @@ stdenv.mkDerivation rec {
"-DDESKTOP_APP_QT6=OFF"
];
preFixup = ''
remove-references-to -t ${stdenv.cc.cc} $out/bin/kotatogram-desktop
remove-references-to -t ${microsoft_gsl} $out/bin/kotatogram-desktop
remove-references-to -t ${tg_owt.dev} $out/bin/kotatogram-desktop
installPhase = optionalString stdenv.isDarwin ''
mkdir -p $out/Applications
cp -r Kotatogram.app $out/Applications
ln -s $out/Applications/Kotatogram.app/Contents/MacOS $out/bin
'';
postFixup = optionalString withWebKit ''
preFixup = ''
binName=${if stdenv.isLinux then "kotatogram-desktop" else "Kotatogram"}
remove-references-to -t ${stdenv.cc.cc} $out/bin/$binName
remove-references-to -t ${microsoft_gsl} $out/bin/$binName
remove-references-to -t ${tg_owt.dev} $out/bin/$binName
'';
postFixup = optionalString (stdenv.isLinux && withWebKit) ''
# We also use gappsWrapperArgs from wrapGAppsHook.
wrapProgram $out/bin/kotatogram-desktop \
"''${gappsWrapperArgs[@]}" \
@@ -149,7 +244,7 @@ stdenv.mkDerivation rec {
It contains some useful (or purely cosmetic) features, but they could be unstable. A detailed list is available here: https://kotatogram.github.io/changes
'';
license = licenses.gpl3;
platforms = platforms.linux;
platforms = platforms.all;
homepage = "https://kotatogram.github.io";
changelog = "https://github.com/kotatogram/kotatogram-desktop/releases/tag/k{version}";
maintainers = with maintainers; [ ilya-fedin ];
@@ -0,0 +1,415 @@
diff --git a/Telegram/SourceFiles/platform/mac/file_bookmark_mac.mm b/Telegram/SourceFiles/platform/mac/file_bookmark_mac.mm
index 337055443..09604b117 100644
--- a/Telegram/SourceFiles/platform/mac/file_bookmark_mac.mm
+++ b/Telegram/SourceFiles/platform/mac/file_bookmark_mac.mm
@@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include <Cocoa/Cocoa.h>
#include <CoreFoundation/CFURL.h>
+#undef check
namespace Platform {
namespace {
diff --git a/Telegram/SourceFiles/platform/mac/specific_mac.mm b/Telegram/SourceFiles/platform/mac/specific_mac.mm
index 3b4395ae3..7f8ee401f 100644
--- a/Telegram/SourceFiles/platform/mac/specific_mac.mm
+++ b/Telegram/SourceFiles/platform/mac/specific_mac.mm
@@ -119,6 +119,7 @@ PermissionStatus GetPermissionStatus(PermissionType type) {
switch (type) {
case PermissionType::Microphone:
case PermissionType::Camera:
+#if 0
const auto nativeType = (type == PermissionType::Microphone)
? AVMediaTypeAudio
: AVMediaTypeVideo;
@@ -133,6 +134,7 @@ PermissionStatus GetPermissionStatus(PermissionType type) {
return PermissionStatus::Denied;
}
}
+#endif
break;
}
return PermissionStatus::Granted;
@@ -142,6 +144,7 @@ void RequestPermission(PermissionType type, Fn<void(PermissionStatus)> resultCal
switch (type) {
case PermissionType::Microphone:
case PermissionType::Camera:
+#if 0
const auto nativeType = (type == PermissionType::Microphone)
? AVMediaTypeAudio
: AVMediaTypeVideo;
@@ -152,6 +155,7 @@ void RequestPermission(PermissionType type, Fn<void(PermissionStatus)> resultCal
});
}];
}
+#endif
break;
}
resultCallback(PermissionStatus::Granted);
diff --git a/Telegram/SourceFiles/platform/mac/touchbar/items/mac_formatter_item.h b/Telegram/SourceFiles/platform/mac/touchbar/items/mac_formatter_item.h
index a537929c8..82ef2b837 100644
--- a/Telegram/SourceFiles/platform/mac/touchbar/items/mac_formatter_item.h
+++ b/Telegram/SourceFiles/platform/mac/touchbar/items/mac_formatter_item.h
@@ -9,8 +9,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#import <AppKit/NSPopoverTouchBarItem.h>
#import <AppKit/NSTouchBar.h>
+#undef check
-API_AVAILABLE(macos(10.12.2))
@interface TextFormatPopover : NSPopoverTouchBarItem
- (id)init:(NSTouchBarItemIdentifier)identifier;
@end
diff --git a/Telegram/SourceFiles/platform/mac/touchbar/items/mac_pinned_chats_item.h b/Telegram/SourceFiles/platform/mac/touchbar/items/mac_pinned_chats_item.h
index c6a4b886f..d2e0936c0 100644
--- a/Telegram/SourceFiles/platform/mac/touchbar/items/mac_pinned_chats_item.h
+++ b/Telegram/SourceFiles/platform/mac/touchbar/items/mac_pinned_chats_item.h
@@ -8,12 +8,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#pragma once
#include <AppKit/NSImageView.h>
+#undef check
namespace Main {
class Session;
} // namespace Main
-API_AVAILABLE(macos(10.12.2))
@interface PinnedDialogsPanel : NSImageView
- (id)init:(not_null<Main::Session*>)session
destroyEvent:(rpl::producer<>)touchBarSwitches;
diff --git a/Telegram/SourceFiles/platform/mac/touchbar/items/mac_scrubber_item.h b/Telegram/SourceFiles/platform/mac/touchbar/items/mac_scrubber_item.h
index 27b04467c..b1a7dfbd9 100644
--- a/Telegram/SourceFiles/platform/mac/touchbar/items/mac_scrubber_item.h
+++ b/Telegram/SourceFiles/platform/mac/touchbar/items/mac_scrubber_item.h
@@ -9,12 +9,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#import <AppKit/NSPopoverTouchBarItem.h>
#import <AppKit/NSTouchBar.h>
+#undef check
namespace Window {
class Controller;
} // namespace Window
-API_AVAILABLE(macos(10.12.2))
@interface StickerEmojiPopover : NSPopoverTouchBarItem<NSTouchBarDelegate>
- (id)init:(not_null<Window::Controller*>)controller
identifier:(NSTouchBarItemIdentifier)identifier;
diff --git a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_audio.h b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_audio.h
index ec4596c67..972461aef 100644
--- a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_audio.h
+++ b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_audio.h
@@ -8,8 +8,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#pragma once
#import <AppKit/NSTouchBar.h>
+#undef check
-API_AVAILABLE(macos(10.12.2))
@interface TouchBarAudioPlayer : NSTouchBar<NSTouchBarDelegate>
- (rpl::producer<>)closeRequests;
@end
diff --git a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_common.h b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_common.h
index 52b54de12..ac3857f9b 100644
--- a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_common.h
+++ b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_common.h
@@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#import <AppKit/NSImage.h>
#import <Foundation/Foundation.h>
+#undef check
namespace TouchBar {
diff --git a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_controls.h b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_controls.h
index 1cc8c832f..c2178c975 100644
--- a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_controls.h
+++ b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_controls.h
@@ -20,19 +20,19 @@ struct TrackState;
namespace TouchBar {
-[[nodiscard]] API_AVAILABLE(macos(10.12.2))
+[[nodiscard]]
NSButton *CreateTouchBarButton(
NSImage *image,
rpl::lifetime &lifetime,
Fn<void()> callback);
-[[nodiscard]] API_AVAILABLE(macos(10.12.2))
+[[nodiscard]]
NSButton *CreateTouchBarButton(
const style::icon &icon,
rpl::lifetime &lifetime,
Fn<void()> callback);
-[[nodiscard]] API_AVAILABLE(macos(10.12.2))
+[[nodiscard]]
NSButton *CreateTouchBarButtonWithTwoStates(
NSImage *icon1,
NSImage *icon2,
@@ -41,7 +41,7 @@ NSButton *CreateTouchBarButtonWithTwoStates(
bool firstState,
rpl::producer<bool> stateChanged = rpl::never<bool>());
-[[nodiscard]] API_AVAILABLE(macos(10.12.2))
+[[nodiscard]]
NSButton *CreateTouchBarButtonWithTwoStates(
const style::icon &icon1,
const style::icon &icon2,
@@ -50,14 +50,14 @@ NSButton *CreateTouchBarButtonWithTwoStates(
bool firstState,
rpl::producer<bool> stateChanged = rpl::never<bool>());
-[[nodiscard]] API_AVAILABLE(macos(10.12.2))
+[[nodiscard]]
NSSliderTouchBarItem *CreateTouchBarSlider(
NSString *itemId,
rpl::lifetime &lifetime,
Fn<void(bool, double, double)> callback,
rpl::producer<Media::Player::TrackState> stateChanged);
-[[nodiscard]] API_AVAILABLE(macos(10.12.2))
+[[nodiscard]]
NSCustomTouchBarItem *CreateTouchBarTrackPosition(
NSString *itemId,
rpl::producer<Media::Player::TrackState> stateChanged);
diff --git a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.h b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.h
index f03546eaf..bc8c63678 100644
--- a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.h
+++ b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.h
@@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#pragma once
#import <AppKit/NSTouchBar.h>
+#undef check
namespace Window {
class Controller;
@@ -21,7 +22,6 @@ const auto kPopoverPickerItemIdentifier = @"pickerButtons";
} // namespace TouchBar::Main
-API_AVAILABLE(macos(10.12.2))
@interface TouchBarMain : NSTouchBar
- (id)init:(not_null<Window::Controller*>)controller
touchBarSwitches:(rpl::producer<>)touchBarSwitches;
diff --git a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_manager.h b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_manager.h
index 464f87c9c..9a008c75e 100644
--- a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_manager.h
+++ b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_manager.h
@@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#pragma once
#import <AppKit/NSTouchBar.h>
+#undef check
namespace Main {
class Domain;
@@ -17,7 +18,6 @@ namespace Window {
class Controller;
} // namespace Window
-API_AVAILABLE(macos(10.12.2))
@interface RootTouchBar : NSTouchBar<NSTouchBarDelegate>
- (id)init:(rpl::producer<bool>)canApplyMarkdown
controller:(not_null<Window::Controller*>)controller
Submodule Telegram/ThirdParty/tgcalls contains modified content
diff --git a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoDecoderFactory.mm b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoDecoderFactory.mm
index 8a4417b..2d9794e 100644
--- a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoDecoderFactory.mm
+++ b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoDecoderFactory.mm
@@ -71,7 +71,7 @@
if (@available(iOS 11.0, *)) {
[result addObject:h265Info];
}
-#else // WEBRTC_IOS
+#elif 0 // WEBRTC_IOS
if (@available(macOS 10.13, *)) {
[result addObject:h265Info];
}
@@ -101,7 +101,7 @@
return [[TGRTCVideoDecoderH265 alloc] init];
}
}
-#else // WEBRTC_IOS
+#elif 0 // WEBRTC_IOS
if (@available(macOS 10.13, *)) {
if ([info.name isEqualToString:kRTCVideoCodecH265Name]) {
return [[TGRTCVideoDecoderH265 alloc] init];
diff --git a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoEncoderFactory.mm b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoEncoderFactory.mm
index 2901417..ac9ec2a 100644
--- a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoEncoderFactory.mm
+++ b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoEncoderFactory.mm
@@ -76,7 +76,7 @@
[result addObject:h265Info];
}
}
-#else // WEBRTC_IOS
+#elif 0 // WEBRTC_IOS
if (@available(macOS 10.13, *)) {
if ([[AVAssetExportSession allExportPresets] containsObject:AVAssetExportPresetHEVCHighestQuality]) {
[result addObject:h265Info];
@@ -112,7 +112,7 @@
return [[TGRTCVideoEncoderH265 alloc] initWithCodecInfo:info];
}
}
-#else // WEBRTC_IOS
+#elif 0 // WEBRTC_IOS
if (@available(macOS 10.13, *)) {
if ([info.name isEqualToString:kRTCVideoCodecH265Name]) {
return [[TGRTCVideoEncoderH265 alloc] initWithCodecInfo:info];
diff --git a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.mm b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.mm
index de92427..9a5b20d 100644
--- a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.mm
+++ b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.mm
@@ -507,8 +507,7 @@ static tgcalls::DarwinVideoTrackSource *getObjCVideoSource(const rtc::scoped_ref
- (void)captureOutput:(AVCaptureOutput *)captureOutput
didDropSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection {
- NSString *droppedReason =
- (__bridge NSString *)CMGetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_DroppedFrameReason, nil);
+ NSString *droppedReason = nil;
RTCLogError(@"Dropped sample buffer. Reason: %@", droppedReason);
}
diff --git a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.mm b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.mm
index bcabcf7..de7b6c7 100644
--- a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.mm
+++ b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.mm
@@ -245,9 +245,11 @@ private:
layer.framebufferOnly = true;
layer.opaque = false;
// layer.cornerRadius = 4;
+#if 0
if (@available(macOS 10.13, *)) {
layer.displaySyncEnabled = NO;
}
+#endif
// layer.presentsWithTransaction = YES;
layer.backgroundColor = [NSColor clearColor].CGColor;
layer.contentsGravity = kCAGravityResizeAspectFill;
@@ -334,9 +336,7 @@ private:
- (RTCVideoRotation)rtcFrameRotation {
if (_rotationOverride) {
RTCVideoRotation rotation;
- if (@available(macOS 10.13, *)) {
- [_rotationOverride getValue:&rotation size:sizeof(rotation)];
- } else {
+ {
[_rotationOverride getValue:&rotation];
}
return rotation;
Submodule Telegram/lib_base contains modified content
diff --git a/Telegram/lib_base/base/platform/mac/base_global_shortcuts_mac.mm b/Telegram/lib_base/base/platform/mac/base_global_shortcuts_mac.mm
index 5491702..32befc6 100644
--- a/Telegram/lib_base/base/platform/mac/base_global_shortcuts_mac.mm
+++ b/Telegram/lib_base/base/platform/mac/base_global_shortcuts_mac.mm
@@ -128,6 +128,7 @@ bool Available() {
}
bool Allowed() {
+#if 0
if (@available(macOS 10.15, *)) {
// Input Monitoring is required on macOS 10.15 an later.
// Even if user grants access, restart is required.
@@ -141,6 +142,7 @@ bool Allowed() {
return AXIsProcessTrustedWithOptions(
(__bridge CFDictionaryRef)options);
}
+#endif
return true;
}
diff --git a/Telegram/lib_base/base/platform/mac/base_info_mac.mm b/Telegram/lib_base/base/platform/mac/base_info_mac.mm
index 29e368f..ea1f65f 100644
--- a/Telegram/lib_base/base/platform/mac/base_info_mac.mm
+++ b/Telegram/lib_base/base/platform/mac/base_info_mac.mm
@@ -203,16 +203,20 @@ void Finish() {
}
void OpenInputMonitoringPrivacySettings() {
+#if 0
if (@available(macOS 10.15, *)) {
IOHIDRequestAccess(kIOHIDRequestTypeListenEvent);
}
+#endif
[[NSWorkspace sharedWorkspace] openURL:PrivacySettingsUrl("Privacy_ListenEvent")];
}
void OpenDesktopCapturePrivacySettings() {
+#if 0
if (@available(macOS 11.0, *)) {
CGRequestScreenCaptureAccess();
}
+#endif
[[NSWorkspace sharedWorkspace] openURL:PrivacySettingsUrl("Privacy_ScreenCapture")];
}
diff --git a/Telegram/lib_base/base/platform/mac/base_system_media_controls_mac.mm b/Telegram/lib_base/base/platform/mac/base_system_media_controls_mac.mm
index c86ac77..b081162 100644
--- a/Telegram/lib_base/base/platform/mac/base_system_media_controls_mac.mm
+++ b/Telegram/lib_base/base/platform/mac/base_system_media_controls_mac.mm
@@ -271,6 +271,7 @@ void SystemMediaControls::setThumbnail(const QImage &thumbnail) {
if (thumbnail.isNull()) {
return;
}
+#if 0
if (@available(macOS 10.13.2, *)) {
const auto copy = thumbnail;
[_private->info
@@ -284,6 +285,7 @@ void SystemMediaControls::setThumbnail(const QImage &thumbnail) {
forKey:MPMediaItemPropertyArtwork];
updateDisplay();
}
+#endif
}
void SystemMediaControls::setDuration(int duration) {
@@ -302,10 +304,12 @@ void SystemMediaControls::setVolume(float64 volume) {
}
void SystemMediaControls::clearThumbnail() {
+#if 0
if (@available(macOS 10.13.2, *)) {
[_private->info removeObjectForKey:MPMediaItemPropertyArtwork];
updateDisplay();
}
+#endif
}
void SystemMediaControls::clearMetadata() {
@@ -367,9 +371,11 @@ bool SystemMediaControls::volumeSupported() const {
}
bool SystemMediaControls::Supported() {
+#if 0
if (@available(macOS 10.12.2, *)) {
return true;
}
+#endif
return false;
}
Submodule Telegram/lib_webrtc contains modified content
diff --git a/Telegram/lib_webrtc/webrtc/mac/webrtc_media_devices_mac.mm b/Telegram/lib_webrtc/webrtc/mac/webrtc_media_devices_mac.mm
index 21e93f7..10a3890 100644
--- a/Telegram/lib_webrtc/webrtc/mac/webrtc_media_devices_mac.mm
+++ b/Telegram/lib_webrtc/webrtc/mac/webrtc_media_devices_mac.mm
@@ -397,6 +397,7 @@ void MacMediaDevices::videoInputRefreshed() {
}
bool MacDesktopCaptureAllowed() {
+#if 0
if (@available(macOS 11.0, *)) {
// Screen Recording is required on macOS 10.15 an later.
// Even if user grants access, restart is required.
@@ -421,6 +422,7 @@ bool MacDesktopCaptureAllowed() {
CFRelease(stream);
return true;
}
+#endif
return true;
}
@@ -0,0 +1,55 @@
diff --git a/src/rtc_base/system/gcd_helpers.m b/src/rtc_base/system/gcd_helpers.m
index fd9a361f..3a63be6d 100644
--- a/src/rtc_base/system/gcd_helpers.m
+++ b/src/rtc_base/system/gcd_helpers.m
@@ -13,9 +13,6 @@
dispatch_queue_t RTCDispatchQueueCreateWithTarget(const char *label,
dispatch_queue_attr_t attr,
dispatch_queue_t target) {
- if (@available(iOS 10, macOS 10.12, tvOS 10, watchOS 3, *)) {
- return dispatch_queue_create_with_target(label, attr, target);
- }
dispatch_queue_t queue = dispatch_queue_create(label, attr);
dispatch_set_target_queue(queue, target);
return queue;
diff --git a/src/sdk/objc/components/video_codec/nalu_rewriter.cc b/src/sdk/objc/components/video_codec/nalu_rewriter.cc
index 61c1e7d6..b19f3f91 100644
--- a/src/sdk/objc/components/video_codec/nalu_rewriter.cc
+++ b/src/sdk/objc/components/video_codec/nalu_rewriter.cc
@@ -245,10 +245,7 @@ bool H265CMSampleBufferToAnnexBBuffer(
int nalu_header_size = 0;
size_t param_set_count = 0;
OSStatus status = noErr;
- if (__builtin_available(macOS 10.13, *)) {
- status = CMVideoFormatDescriptionGetHEVCParameterSetAtIndex(
- description, 0, nullptr, nullptr, &param_set_count, &nalu_header_size);
- } else {
+ {
RTC_LOG(LS_ERROR) << "Not supported.";
return false;
}
@@ -271,10 +268,7 @@ bool H265CMSampleBufferToAnnexBBuffer(
size_t param_set_size = 0;
const uint8_t* param_set = nullptr;
for (size_t i = 0; i < param_set_count; ++i) {
- if (__builtin_available(macOS 10.13, *)) {
- status = CMVideoFormatDescriptionGetHEVCParameterSetAtIndex(
- description, i, &param_set, &param_set_size, nullptr, nullptr);
- } else {
+ {
RTC_LOG(LS_ERROR) << "Not supported.";
return false;
}
@@ -514,11 +508,7 @@ CMVideoFormatDescriptionRef CreateH265VideoFormatDescription(
// Parse the SPS and PPS into a CMVideoFormatDescription.
CMVideoFormatDescriptionRef description = nullptr;
OSStatus status = noErr;
- if (__builtin_available(macOS 10.13, *)) {
- status = CMVideoFormatDescriptionCreateFromHEVCParameterSets(
- kCFAllocatorDefault, 3, param_set_ptrs, param_set_sizes, 4, nullptr,
- &description);
- } else {
+ {
RTC_LOG(LS_ERROR) << "Not supported.";
return nullptr;
}
@@ -27,6 +27,21 @@
, mesa
, libglvnd
, libepoxy
, Cocoa
, AppKit
, IOKit
, IOSurface
, Foundation
, AVFoundation
, CoreMedia
, VideoToolbox
, CoreGraphics
, CoreVideo
, OpenGL
, Metal
, MetalKit
, CoreFoundation
, ApplicationServices
}:
stdenv.mkDerivation {
@@ -41,6 +56,11 @@ stdenv.mkDerivation {
fetchSubmodules = true;
};
patches = [
# let it build with nixpkgs 10.12 sdk
./tg_owt-10.12-sdk.patch
];
outputs = [ "out" "dev" ];
nativeBuildInputs = [ pkg-config cmake ninja yasm ];
@@ -54,6 +74,8 @@ stdenv.mkDerivation {
openh264
usrsctp
libvpx
abseil-cpp
] ++ lib.optionals stdenv.isLinux [
libX11
libXtst
libXcomposite
@@ -63,13 +85,31 @@ stdenv.mkDerivation {
libXrandr
libXi
glib
abseil-cpp
pipewire
mesa
libepoxy
libglvnd
] ++ lib.optionals stdenv.isDarwin [
Cocoa
AppKit
IOKit
IOSurface
Foundation
AVFoundation
CoreMedia
VideoToolbox
CoreGraphics
CoreVideo
OpenGL
Metal
MetalKit
CoreFoundation
ApplicationServices
];
# https://github.com/NixOS/nixpkgs/issues/130963
NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-lc++abi";
enableParallelBuilding = true;
propagatedBuildInputs = [
+11 -3
View File
@@ -26761,9 +26761,17 @@ with pkgs;
kooha = callPackage ../applications/video/kooha { };
kotatogram-desktop = libsForQt5.callPackage ../applications/networking/instant-messengers/telegram/kotatogram-desktop {
# C++20 is required, aarch64 has gcc 9 by default
stdenv = if stdenv.isAarch64 then gcc10Stdenv else stdenv;
# Qt 5.15 is not default on mac, tdesktop requires 5.15 (and kotatogram subsequently)
kotatogram-desktop = libsForQt515.callPackage ../applications/networking/instant-messengers/telegram/kotatogram-desktop {
inherit (darwin.apple_sdk.frameworks) Cocoa CoreFoundation CoreServices CoreText CoreGraphics
CoreMedia OpenGL AudioUnit ApplicationServices Foundation AGL Security SystemConfiguration
Carbon AudioToolbox VideoToolbox VideoDecodeAcceleration AVFoundation CoreAudio CoreVideo
CoreMediaIO QuartzCore AppKit CoreWLAN WebKit IOKit GSS MediaPlayer IOSurface Metal MetalKit;
# C++20 is required, darwin has Clang 7 by default, aarch64 has gcc 9 by default
stdenv = if stdenv.isDarwin
then llvmPackages_12.libcxxStdenv
else if stdenv.isAarch64 then gcc10Stdenv else stdenv;
# tdesktop has random crashes when jemalloc is built with gcc.
# Apparently, it triggers some bug due to usage of gcc's builtin