Merge branch 'cycle8' into xcode8

This commit is contained in:
Sebastien Pouliot 2016-07-19 14:27:59 -04:00
Родитель 9f781aa45b 40137dcfb6
Коммит 308db4d1ea
10 изменённых файлов: 43 добавлений и 59 удалений

Просмотреть файл

@ -90,7 +90,10 @@ MAC_ASSEMBLY_NAMES = \
System.Xml.Serialization \
System.Xml \
System \
$(TLS_PROVIDER_ASSEMBLY_NAMES)
$(TLS_PROVIDER_ASSEMBLY_NAMES) \
System.Runtime.InteropServices.RuntimeInformation \
System.Reflection.Context \
System.Net.Http.WinHttpHandler
FACADE_SUBDIRS_MK = $(MONO_PATH)/mcs/class/Facades/subdirs.make
# File does not exist before checking out mono
@ -512,6 +515,9 @@ IOS_ASSEMBLIES = I18N.CJK I18N.MidEast I18N.Other I18N.Rare I18N.West I18N Mono.
System.ServiceModel.Internals \
System.Numerics System.IO.Compression System.IO.Compression.FileSystem \
System.ComponentModel.DataAnnotations System.ComponentModel.Composition \
System.Net.Http.WinHttpHandler \
System.Numerics.Vectors System.Reflection.Context System.Reflection.DispatchProxy \
System.Runtime.InteropServices.RuntimeInformation System.Security System.Xml.XPath.XmlDocument \
System.Windows System.Xml.Serialization System.Net Mono.Dynamic.Interpreter \
Microsoft.CSharp Mono.CSharp $(TLS_PROVIDER_ASSEMBLY_NAMES)

Просмотреть файл

@ -435,7 +435,7 @@ namespace XamCore.CoreFoundation {
using (CFString cfKey = new CFString (key),
cfValue = new CFString (defaultValue),
cfTable = new CFString (tableName)) {
return CFString.FetchString (CFBundleCopyLocalizedString (handle, cfKey.Handle, cfValue.Handle, cfTable.Handle));
return CFString.FetchString (CFBundleCopyLocalizedString (handle, cfKey.Handle, cfValue.Handle, cfTable.Handle), releaseHandle: true);
}
}

Просмотреть файл

@ -105,11 +105,11 @@ namespace XamCore.CoreFoundation {
throw new ArgumentException ("cfErrorHandle must not be null.", "cfErrorHandle");
var e = new CFException (
ToString (CFErrorCopyDescription (cfErrorHandle)),
CFString.FetchString (CFErrorCopyDescription (cfErrorHandle), releaseHandle: true),
(NSString) Runtime.GetNSObject (CFErrorGetDomain (cfErrorHandle)),
CFErrorGetCode (cfErrorHandle),
ToString (CFErrorCopyFailureReason (cfErrorHandle)),
ToString (CFErrorCopyRecoverySuggestion (cfErrorHandle)));
CFString.FetchString (CFErrorCopyFailureReason (cfErrorHandle), releaseHandle: true),
CFString.FetchString (CFErrorCopyRecoverySuggestion (cfErrorHandle), releaseHandle: true));
var cfUserInfo = CFErrorCopyUserInfo (cfErrorHandle);
if (cfUserInfo != IntPtr.Zero) {
@ -128,19 +128,6 @@ namespace XamCore.CoreFoundation {
public string FailureReason {get; private set;}
public string RecoverySuggestion {get; private set;}
static string ToString (IntPtr cfStringRef)
{
return ToString (cfStringRef, true);
}
static string ToString (IntPtr cfStringRef, bool release)
{
var r = CFString.FetchString (cfStringRef);
if (release && (cfStringRef != IntPtr.Zero))
CFObject.CFRelease (cfStringRef);
return r;
}
[DllImport (Constants.CoreFoundationLibrary)]
static extern IntPtr CFErrorCopyDescription (IntPtr err);

Просмотреть файл

@ -180,6 +180,7 @@ namespace XamCore.CoreFoundation {
CFObject.CFRetain (handle);
}
// to be used when an API like CF*Get* returns a CFString
internal static string FetchString (IntPtr handle)
{
if (handle == IntPtr.Zero)
@ -205,7 +206,16 @@ namespace XamCore.CoreFoundation {
return str;
}
// to be used when an API like CF*Copy* returns a CFString
internal static string FetchString (IntPtr handle, bool releaseHandle)
{
var s = FetchString (handle);
if (releaseHandle && (handle != IntPtr.Zero))
CFObject.CFRelease (handle);
return s;
}
public static implicit operator string (CFString x)
{
if (x.str == null)

Просмотреть файл

@ -144,7 +144,7 @@ namespace XamCore.CoreGraphics {
public string PostScriptName {
get {
return CFString.FetchString (CGFontCopyPostScriptName (handle));
return CFString.FetchString (CGFontCopyPostScriptName (handle), releaseHandle: true);
}
}
@ -153,7 +153,7 @@ namespace XamCore.CoreGraphics {
public string FullName {
get {
return CFString.FetchString (CGFontCopyFullName (handle));
return CFString.FetchString (CGFontCopyFullName (handle), releaseHandle: true);
}
}
@ -258,7 +258,7 @@ namespace XamCore.CoreGraphics {
public string GlyphNameForGlyph (ushort glyph)
{
return CFString.FetchString (CGFontCopyGlyphNameForGlyph (handle, glyph));
return CFString.FetchString (CGFontCopyGlyphNameForGlyph (handle, glyph), releaseHandle: true);
}
//[DllImport (Constants.CoreGraphicsLibrary)]

Просмотреть файл

@ -1742,18 +1742,10 @@ namespace XamCore.CoreText {
#endregion
#region Font Names
static string GetStringAndRelease (IntPtr cfStringRef)
{
if (cfStringRef == IntPtr.Zero)
return null;
using (var s = new CFString (cfStringRef, true))
return s;
}
[DllImport (Constants.CoreTextLibrary)]
static extern IntPtr CTFontCopyPostScriptName (IntPtr font);
public string PostScriptName {
get {return GetStringAndRelease (CTFontCopyPostScriptName (handle));}
get { return CFString.FetchString (CTFontCopyPostScriptName (handle), releaseHandle: true); }
}
[DllImport (Constants.CoreTextLibrary)]
@ -1761,7 +1753,7 @@ namespace XamCore.CoreText {
/* CTFontRef __nonnull */ IntPtr font);
public string FamilyName {
get {return GetStringAndRelease (CTFontCopyFamilyName (handle));}
get { return CFString.FetchString (CTFontCopyFamilyName (handle), releaseHandle: true); }
}
[DllImport (Constants.CoreTextLibrary)]
@ -1769,7 +1761,7 @@ namespace XamCore.CoreText {
/* CTFontRef __nonnull */ IntPtr font);
public string FullName {
get {return GetStringAndRelease (CTFontCopyFullName (handle));}
get { return CFString.FetchString (CTFontCopyFullName (handle), releaseHandle: true); }
}
[DllImport (Constants.CoreTextLibrary)]
@ -1777,14 +1769,14 @@ namespace XamCore.CoreText {
/* CTFontRef __nonnull */ IntPtr font);
public string DisplayName {
get {return GetStringAndRelease (CTFontCopyDisplayName (handle));}
get { return CFString.FetchString (CTFontCopyDisplayName (handle), releaseHandle: true); }
}
[DllImport (Constants.CoreTextLibrary)]
static extern IntPtr CTFontCopyName (IntPtr font, IntPtr nameKey);
public string GetName (CTFontNameKey nameKey)
{
return GetStringAndRelease (CTFontCopyName (handle, CTFontNameKeyId.ToId (nameKey).Handle));
return CFString.FetchString (CTFontCopyName (handle, CTFontNameKeyId.ToId (nameKey).Handle), releaseHandle: true);
}
[DllImport (Constants.CoreTextLibrary)]
@ -1799,8 +1791,8 @@ namespace XamCore.CoreText {
public string GetLocalizedName (CTFontNameKey nameKey, out string actualLanguage)
{
IntPtr actual;
var ret = GetStringAndRelease (CTFontCopyLocalizedName (handle, CTFontNameKeyId.ToId (nameKey).Handle, out actual));
actualLanguage = GetStringAndRelease (actual);
var ret = CFString.FetchString (CTFontCopyLocalizedName (handle, CTFontNameKeyId.ToId (nameKey).Handle, out actual), releaseHandle: true);
actualLanguage = CFString.FetchString (actual, releaseHandle: true);
return ret;
}
#endregion

Просмотреть файл

@ -19,7 +19,7 @@ namespace XamCore.MediaToolbox {
[iOS (9,0)][Mac (10,11)]
static public string GetLocalizedName (this CMMediaType mediaType)
{
return CFString.FetchString (MTCopyLocalizedNameForMediaType (mediaType));
return CFString.FetchString (MTCopyLocalizedNameForMediaType (mediaType), releaseHandle: true);
}
[iOS (9,0)][Mac (10,11)]
@ -30,7 +30,7 @@ namespace XamCore.MediaToolbox {
[iOS (9,0)][Mac (10,11)]
static public string GetLocalizedName (this CMMediaType mediaType, uint mediaSubType)
{
return CFString.FetchString (MTCopyLocalizedNameForMediaSubType (mediaType, mediaSubType));
return CFString.FetchString (MTCopyLocalizedNameForMediaSubType (mediaType, mediaSubType), releaseHandle: true);
}
}
}

Просмотреть файл

@ -679,35 +679,25 @@ namespace XamCore.SearchKit
[DllImport (Constants.SearchKitLibrary)]
extern static IntPtr /*NSString*/ SKSummaryCopyParagraphSummaryString (IntPtr summary, nint maxParagraphs);
static string ReturnString (IntPtr newStringHandle)
{
if (newStringHandle == IntPtr.Zero)
return null;
var ret = CFString.FetchString (newStringHandle);
CFObject.CFRelease (newStringHandle);
return ret;
}
public string GetSentence (nint idx)
{
return ReturnString (SKSummaryCopySentenceAtIndex (handle, idx));
return CFString.FetchString (SKSummaryCopySentenceAtIndex (handle, idx), releaseHandle: true);
}
public string GetParagraph (nint idx)
{
return ReturnString (SKSummaryCopyParagraphAtIndex (handle, idx));
return CFString.FetchString (SKSummaryCopyParagraphAtIndex (handle, idx), releaseHandle: true);
}
public string GetSentenceSummary (nint maxSentences)
{
return ReturnString (SKSummaryCopySentenceSummaryString (handle, maxSentences));
return CFString.FetchString (SKSummaryCopySentenceSummaryString (handle, maxSentences), releaseHandle: true);
}
public string GetParagraphSummary (nint maxParagraphs)
{
return ReturnString (SKSummaryCopyParagraphSummaryString (handle, maxParagraphs));
return CFString.FetchString (SKSummaryCopyParagraphSummaryString (handle, maxParagraphs), releaseHandle: true);
}
}

Просмотреть файл

@ -138,10 +138,7 @@ namespace XamCore.Security {
if (handle == IntPtr.Zero)
throw new ObjectDisposedException ("SecCertificate");
IntPtr cfstr = SecCertificateCopySubjectSummary (handle);
string ret = CFString.FetchString (cfstr);
CFObject.CFRelease (cfstr);
return ret;
return CFString.FetchString (SecCertificateCopySubjectSummary (handle), releaseHandle: true);
}
}

Просмотреть файл

@ -311,13 +311,15 @@ namespace xharness
public async Task<int> RunAsync ()
{
CrashReportSnapshot crash_reports = new CrashReportSnapshot () { Device = !isSimulator, Harness = Harness, Log = main_log, Logs = Logs, LogDirectory = LogDirectory };
CrashReportSnapshot crash_reports;
LogStream device_system_log = null;
LogStream listener_log = null;
Log run_log = main_log;
Initialize ();
crash_reports = new CrashReportSnapshot () { Device = !isSimulator, Harness = Harness, Log = main_log, Logs = Logs, LogDirectory = LogDirectory };
var args = new StringBuilder ();
if (!string.IsNullOrEmpty (Harness.XcodeRoot))
args.Append (" --sdkroot ").Append (Harness.XcodeRoot);