Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions BulletSharp/LinearMath/Threads.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,33 @@ internal TaskSchedulerPpl(IntPtr native)
}
}

/// <summary>
/// Default task sheduler not get but created, so mast be disposable
/// </summary>
public sealed class TaskSchedulerDefault : TaskScheduler, System.IDisposable
{
internal TaskSchedulerDefault(IntPtr native)
: base(native)
{
}

~TaskSchedulerDefault()
{
DestroyNativeObject();
}
private void DestroyNativeObject()
{
if (Native != IntPtr.Zero)
btThreads_DestroyDefaultTaskScheduler(Native);
}

void IDisposable.Dispose()
{
DestroyNativeObject();
GC.SuppressFinalize(this);
}
}

public class Threads
{
private static TaskSchedulerOpenMP _taskSchedulerOpenMP;
Expand Down Expand Up @@ -122,5 +149,14 @@ public static TaskSchedulerTbb GetTbbTaskScheduler()
}
return _taskSchedulerTbb;
}

public static TaskSchedulerDefault CreateDefaultTaskSheduler()
{
IntPtr native = btThreads_CreateGetDefaultTaskScheduler();
if (native != IntPtr.Zero)
return new TaskSchedulerDefault(native);
return null;
}

}
}
9 changes: 8 additions & 1 deletion BulletSharp/UnsafeNativeMethods.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6601,7 +6601,14 @@ public static extern IntPtr btSerializerWrapper_new(IntPtr allocateCallback, Int
[DllImport(Native.Dll, CallingConvention = Native.Conv)]
public static extern void btTetrahedronShapeEx_setVertices(IntPtr obj, [In] ref Vector3 v0, [In] ref Vector3 v1, [In] ref Vector3 v2, [In] ref Vector3 v3);

[DllImport(Native.Dll, CallingConvention = Native.Conv)]

[DllImport(Native.Dll, CallingConvention = Native.Conv)]
public static extern IntPtr btThreads_CreateGetDefaultTaskScheduler();

[DllImport(Native.Dll, CallingConvention = Native.Conv)]
public static extern void btThreads_DestroyDefaultTaskScheduler(IntPtr taskScheduler);

[DllImport(Native.Dll, CallingConvention = Native.Conv)]
public static extern IntPtr btThreads_btGetOpenMPTaskScheduler();
[DllImport(Native.Dll, CallingConvention = Native.Conv)]
public static extern IntPtr btThreads_btGetPPLTaskScheduler();
Expand Down
9 changes: 9 additions & 0 deletions libbulletc/src/btThreads_wrap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,15 @@ void btITaskScheduler_setNumThreads(btITaskScheduler* obj, int numThreads)
obj->setNumThreads(numThreads);
}


btITaskScheduler* btThreads_CreateGetDefaultTaskScheduler()
{
return btCreateDefaultTaskScheduler();
}
void btThreads_DestroyDefaultTaskScheduler(btITaskScheduler* obj)
{
delete obj;
}
btITaskScheduler* btThreads_btGetSequentialTaskScheduler()
{
return btGetSequentialTaskScheduler();
Expand Down
3 changes: 3 additions & 0 deletions libbulletc/src/btThreads_wrap.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ extern "C" {
EXPORT int btITaskScheduler_getNumThreads(btITaskScheduler* obj);
EXPORT void btITaskScheduler_setNumThreads(btITaskScheduler* obj, int numThreads);

EXPORT btITaskScheduler* btThreads_CreateGetDefaultTaskScheduler();
EXPORT void btThreads_DestroyDefaultTaskScheduler(btITaskScheduler* ts);

EXPORT btITaskScheduler* btThreads_btGetSequentialTaskScheduler();
EXPORT btITaskScheduler* btThreads_btGetOpenMPTaskScheduler();
EXPORT btITaskScheduler* btThreads_btGetPPLTaskScheduler();
Expand Down