unfinished mac os backend implementation

This commit is contained in:
EinTim23 2024-11-05 11:23:15 +01:00
parent 6080802063
commit 06514cc4a0
6 changed files with 57 additions and 7 deletions

View File

@ -1,8 +1,11 @@
cmake_minimum_required (VERSION 3.8) cmake_minimum_required (VERSION 3.8)
include("cmake/create_resources.cmake") include("cmake/create_resources.cmake")
file(GLOB_RECURSE SOURCES "src/*.cpp")
#enable objective c support on mac os, needed for wxwidgets and compile for both intel macs and apple sillicon macs #enable objective c support on mac os, needed for wxwidgets and compile for both intel macs and apple sillicon macs
if(APPLE) if(APPLE)
list(APPEND SOURCES "src/backends/darwin.mm")
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE) set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
project ("PlayerLink" LANGUAGES C CXX OBJCXX) project ("PlayerLink" LANGUAGES C CXX OBJCXX)
else() else()
@ -10,7 +13,7 @@ else()
endif() endif()
create_resources("rsrc" "src/rsrc.hpp") create_resources("rsrc" "src/rsrc.hpp")
file(GLOB_RECURSE SOURCES "src/*.cpp")
add_executable (PlayerLink ${SOURCES}) add_executable (PlayerLink ${SOURCES})
set_property(TARGET PlayerLink PROPERTY CXX_STANDARD 20) set_property(TARGET PlayerLink PROPERTY CXX_STANDARD 20)
add_subdirectory("vendor") add_subdirectory("vendor")
@ -20,6 +23,15 @@ set(LIBRARIES discord-rpc libcurl_static mbedcrypto mbedx509 mbedtls wxmono)
if(WIN32) if(WIN32)
list(APPEND LIBRARIES WindowsApp) list(APPEND LIBRARIES WindowsApp)
target_link_options(PlayerLink PRIVATE "/SUBSYSTEM:WINDOWS" "/ENTRY:mainCRTStartup") target_link_options(PlayerLink PRIVATE "/SUBSYSTEM:WINDOWS" "/ENTRY:mainCRTStartup")
elseif(APPLE)
set(MEDIAREMOTE_FRAMEWORK_PATH "/System/Library/PrivateFrameworks")
find_library(MEDIAREMOTE_LIBRARY MediaRemote PATHS ${MEDIAREMOTE_FRAMEWORK_PATH})
if (MEDIAREMOTE_LIBRARY)
message(STATUS "Found MediaRemote: ${MEDIAREMOTE_LIBRARY}")
list(APPEND LIBRARIES ${MEDIAREMOTE_LIBRARY})
else()
message(FATAL_ERROR "MediaRemote framework not found.")
endif()
endif() endif()
#search directories for the autogenerated wxwidgets setup.h file for all plattforms #search directories for the autogenerated wxwidgets setup.h file for all plattforms

25
src/MediaRemote.hpp Normal file
View File

@ -0,0 +1,25 @@
//
// MediaRemote.h
// MusicRPC
//
// Created by Alexandra Aurora Göttlicher
//
#import <Foundation/Foundation.h>
FOUNDATION_EXPORT CFStringRef _Nullable kMRMediaRemoteNowPlayingInfoDidChangeNotification;
FOUNDATION_EXPORT CFStringRef _Nullable kMRMediaRemoteNowPlayingInfoTitle;
FOUNDATION_EXPORT CFStringRef _Nullable kMRMediaRemoteNowPlayingInfoAlbum;
FOUNDATION_EXPORT CFStringRef _Nullable kMRMediaRemoteNowPlayingInfoArtist;
FOUNDATION_EXPORT CFStringRef _Nullable kMRMediaRemoteNowPlayingInfoDuration;
FOUNDATION_EXPORT CFStringRef _Nullable kMRMediaRemoteNowPlayingInfoElapsedTime;
typedef void (^ MRMediaRemoteGetNowPlayingInfoCompletion)(CFDictionaryRef _Nullable information);
typedef void (^ MRMediaRemoteGetNowPlayingApplicationPIDCompletion)(int PID);
typedef void (^ MRMediaRemoteGetNowPlayingApplicationIsPlayingCompletion)(Boolean isPlaying);
FOUNDATION_EXPORT void MRMediaRemoteRegisterForNowPlayingNotifications(dispatch_queue_t _Nullable queue);
FOUNDATION_EXPORT void MRMediaRemoteGetNowPlayingApplicationPID(dispatch_queue_t _Nullable queue, MRMediaRemoteGetNowPlayingApplicationPIDCompletion _Nullable completion);
FOUNDATION_EXPORT void MRMediaRemoteGetNowPlayingInfo(dispatch_queue_t _Nullable queue, MRMediaRemoteGetNowPlayingInfoCompletion _Nullable completion);
FOUNDATION_EXPORT void MRMediaRemoteGetNowPlayingApplicationIsPlaying(dispatch_queue_t _Nullable queue, MRMediaRemoteGetNowPlayingApplicationIsPlayingCompletion _Nullable completion);

View File

@ -1,5 +0,0 @@
#ifdef __APPLE__
#include "../backend.hpp"
std::shared_ptr<MediaInfo> backend::getMediaInformation() { return nullptr; }
bool backend::toggleAutostart(bool enabled) { return false, }
#endif

16
src/backends/darwin.mm Normal file
View File

@ -0,0 +1,16 @@
#ifdef __APPLE__
#include <Foundation/Foundation.h>
#include "../MediaRemote.hpp"
#include "../backend.hpp"
std::shared_ptr<MediaInfo> backend::getMediaInformation() {
MRMediaRemoteGetNowPlayingInfo(dispatch_get_main_queue(), ^(CFDictionaryRef result) {
if (result) {
NSDictionary *playingInfo = (__bridge NSDictionary *)(result);
NSLog(@"Now Playing Info: %@", playingInfo);
}
});
return nullptr;
}
bool backend::toggleAutostart(bool enabled) { return false; }
#endif

View File

@ -1,5 +1,5 @@
#if !defined(_WIN32) && !defined(__APPLE__) #if !defined(_WIN32) && !defined(__APPLE__)
#include "../backend.hpp" #include "../backend.hpp"
std::shared_ptr<MediaInfo> backend::getMediaInformation() { return nullptr; } std::shared_ptr<MediaInfo> backend::getMediaInformation() { return nullptr; }
bool backend::toggleAutostart(bool enabled) { return false, } bool backend::toggleAutostart(bool enabled) { return false; }
#endif #endif

View File

@ -4,6 +4,8 @@ SET(ENABLE_TESTING OFF FORCE)
add_subdirectory("mbedtls") add_subdirectory("mbedtls")
SET(CURL_USE_MBEDTLS ON) SET(CURL_USE_MBEDTLS ON)
SET(CURL_USE_LIBPSL OFF) SET(CURL_USE_LIBPSL OFF)
SET(CURL_USE_LIBSSH2 OFF)
SET(USE_NGHTTP2 OFF)
SET(USE_LIBIDN2 OFF) SET(USE_LIBIDN2 OFF)
SET(BUILD_STATIC_LIBS ON) SET(BUILD_STATIC_LIBS ON)
SET(BUILD_SHARED_LIBS OFF) SET(BUILD_SHARED_LIBS OFF)