osdep: move cfstr<->cstr conversions to a new apple_utils.c file

This commit is contained in:
rcombs 2021-05-26 17:47:30 -05:00 committed by sfan5
parent 8c8d97c26c
commit 0463096b3c
6 changed files with 71 additions and 21 deletions

View File

@ -35,21 +35,6 @@
#include <mach/mach_time.h>
#endif
CFStringRef cfstr_from_cstr(char *str)
{
return CFStringCreateWithCString(NULL, str, CA_CFSTR_ENCODING);
}
char *cfstr_get_cstr(CFStringRef cfstr)
{
CFIndex size =
CFStringGetMaximumSizeForEncoding(
CFStringGetLength(cfstr), CA_CFSTR_ENCODING) + 1;
char *buffer = talloc_zero_size(NULL, size);
CFStringGetCString(cfstr, buffer, size, CA_CFSTR_ENCODING);
return buffer;
}
#if HAVE_COREAUDIO
static bool ca_is_output_device(struct ao *ao, AudioDeviceID dev)
{

View File

@ -25,11 +25,7 @@
#include "common/msg.h"
#include "audio/out/ao.h"
#include "internal.h"
#define CA_CFSTR_ENCODING kCFStringEncodingUTF8
CFStringRef cfstr_from_cstr(char *str);
char *cfstr_get_cstr(CFStringRef cfstr);
#include "osdep/apple_utils.h"
bool check_ca_st(struct ao *ao, int level, OSStatus code, const char *message);

View File

@ -384,7 +384,8 @@ cocoa = dependency('appleframeworks', modules: ['Cocoa', 'IOKit', 'QuartzCore'],
features += {'cocoa': cocoa.found()}
if features['cocoa']
dependencies += cocoa
sources += files('osdep/macosx_application.m',
sources += files('osdep/apple_utils.c',
'osdep/macosx_application.m',
'osdep/macosx_events.m',
'osdep/macosx_menubar.m',
'osdep/main-fn-cocoa.c',

39
osdep/apple_utils.c Normal file
View File

@ -0,0 +1,39 @@
/*
* Apple-specific utility functions
*
* This file is part of mpv.
*
* mpv is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* mpv is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#include "apple_utils.h"
#include "mpv_talloc.h"
CFStringRef cfstr_from_cstr(const char *str)
{
return CFStringCreateWithCString(NULL, str, kCFStringEncodingUTF8);
}
char *cfstr_get_cstr(const CFStringRef cfstr)
{
if (!cfstr)
return NULL;
CFIndex size =
CFStringGetMaximumSizeForEncoding(
CFStringGetLength(cfstr), kCFStringEncodingUTF8) + 1;
char *buffer = talloc_zero_size(NULL, size);
CFStringGetCString(cfstr, buffer, size, kCFStringEncodingUTF8);
return buffer;
}

28
osdep/apple_utils.h Normal file
View File

@ -0,0 +1,28 @@
/*
* Apple-specific utility functions
*
* This file is part of mpv.
*
* mpv is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* mpv is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MPV_APPLE_UTILS
#define MPV_APPLE_UTILS
#include <CoreFoundation/CoreFoundation.h>
CFStringRef cfstr_from_cstr(const char *str);
char *cfstr_get_cstr(const CFStringRef cfstr);
#endif /* MPV_APPLE_UTILS */

View File

@ -582,6 +582,7 @@ def build(ctx):
( "osdep/polldev.c", "posix" ),
( "osdep/android/strnlen.c", "android"),
( "osdep/apple_utils.c", "cocoa" ),
( "osdep/glob-win.c", "glob-win32" ),
( "osdep/macosx_application.m", "cocoa" ),
( "osdep/macosx_events.m", "cocoa" ),