Vlc.DotNet处理过WPF停止死锁和扩张了Public函数的代码/Vlc.DotNet.Core.Interops/VlcManager.Dialogs.cs
(开头部分) 4KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Runtime.InteropServices;
using Vlc.DotNet.Core.Interops.Signatures;
namespace Vlc.DotNet.Core.Interops
{
public sealed partial class VlcManager
{
private DialogCallbacks? dialogCallbacks;
private IntPtr dialogCallbacksPointer;
/// <summary>
/// Register callbacks in order to handle VLC dialogs. LibVLC 3.0.0 and later.
/// </summary>
public void SetDialogCallbacks(DialogCallbacks? callbacks, IntPtr data)
{
if (VlcVersionNumber.Major < 3)
{
throw new InvalidOperationException($"You need VLC version 3.0 or higher to be able to use {nameof(SetDialogCallbacks)}");
}
if (this.dialogCallbacks.HasValue)
{
Marshal.FreeHGlobal(this.dialogCallbacksPointer);
this.dialogCallbacksPointer = IntPtr.Zero;
}
this.dialogCallbacks = callbacks;
if (this.dialogCallbacks.HasValue)
{
this.dialogCallbacksPointer = Marshal.AllocHGlobal(MarshalHelper.SizeOf<DialogCallbacks>());
Marshal.StructureToPtr(this.dialogCallbacks.Value, this.dialogCallbacksPointer, false);
}
myLibraryLoader.GetInteropDelegate<SetDialogCallbacks>().Invoke(this.myVlcInstance, this.dialogCallbacksPointer, data);
}
/// <summary>
/// Associate an opaque pointer with the dialog id
/// </summary>
public void SetDialogContext(IntPtr dialogId, IntPtr data)
{
if (VlcVersionNumber.Major < 3)
{
throw new InvalidOperationException($"You need VLC version 3.0 or higher to be able to use {nameof(SetDialogContext)}");
}
myLibraryLoader.GetInteropDelegate<SetDialogContext>().Invoke(dialogId, data);
}
/// <summary>
/// Return the opaque pointer associated with the dialog id
/// </summary>
public IntPtr GetDialogContext(IntPtr dialogId)
{
if (VlcVersionNumber.Major < 3)
{
throw new InvalidOperationException($"You need VLC version 3.0 or higher to be able to use {nameof(GetDialogContext)}");
后面还有 54 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。
