From 00ec9b28641b9bdce0b072665c32d2db4a9d9609 Mon Sep 17 00:00:00 2001 From: jpbruyere Date: Thu, 15 Jun 2017 17:14:31 +0200 Subject: [PATCH] work in progress --- Crow.sln | 1 + MDEmbedTest/Makefile | 2 +- MDEmbedTest/libcrow.so | Bin 62792 -> 62664 bytes Tests/BasicTests.cs | 25 +++++++++++++------------ Tests/CrowWindow.cs | 6 +++--- Tests/InterfaceControler.cs | 2 +- Tests/Tests.csproj | 6 +++--- src/Crow.Native/LibCrow.cs | 2 ++ src/GraphicObjects/GraphicObject.cs | 7 ++++--- src/Interface.cs | 10 ++++++++++ 10 files changed, 38 insertions(+), 23 deletions(-) diff --git a/Crow.sln b/Crow.sln index 72677865..19e78ad8 100644 --- a/Crow.sln +++ b/Crow.sln @@ -35,6 +35,7 @@ Global {6CD55032-B8D6-4238-AA91-F9145E1217D4}.Release|Any CPU.ActiveCfg = Release|Any CPU {6CD55032-B8D6-4238-AA91-F9145E1217D4}.Release|Any CPU.Build.0 = Release|Any CPU {74289092-9F70-4941-AFCB-DFD7BE2140B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {74289092-9F70-4941-AFCB-DFD7BE2140B6}.Debug|Any CPU.Build.0 = Debug|Any CPU {74289092-9F70-4941-AFCB-DFD7BE2140B6}.Release|Any CPU.ActiveCfg = Release|Any CPU {74289092-9F70-4941-AFCB-DFD7BE2140B6}.Release|Any CPU.Build.0 = Release|Any CPU {A37A7E14-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU diff --git a/MDEmbedTest/Makefile b/MDEmbedTest/Makefile index 53da377d..279fc03e 100644 --- a/MDEmbedTest/Makefile +++ b/MDEmbedTest/Makefile @@ -29,4 +29,4 @@ clean: .PHONY: run run: - -./${TARGET} ../build/Debug/testDrm.exe + -./${TARGET} ../build/Debug/Tests.exe diff --git a/MDEmbedTest/libcrow.so b/MDEmbedTest/libcrow.so index e151c8a1a8b397921b52d30868b4d4be4e301f49..01d6f3f8c843ee0ca9a326dcc272a09333d8cc9a 100755 GIT binary patch literal 62664 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 this method for your OpenGL rendering calls public virtual void OnRender(FrameEventArgs e) diff --git a/Tests/InterfaceControler.cs b/Tests/InterfaceControler.cs index 869c3896..264ebd21 100644 --- a/Tests/InterfaceControler.cs +++ b/Tests/InterfaceControler.cs @@ -162,7 +162,7 @@ namespace Crow while (true) { CrowInterface.Update (); - Thread.Sleep (3); + Thread.Sleep (1000); } } diff --git a/Tests/Tests.csproj b/Tests/Tests.csproj index 9eb845a1..b6c705c5 100644 --- a/Tests/Tests.csproj +++ b/Tests/Tests.csproj @@ -85,9 +85,6 @@ PreserveNewest - - PreserveNewest - PreserveNewest @@ -356,6 +353,9 @@ + + PreserveNewest + diff --git a/src/Crow.Native/LibCrow.cs b/src/Crow.Native/LibCrow.cs index 28994f02..865c8400 100644 --- a/src/Crow.Native/LibCrow.cs +++ b/src/Crow.Native/LibCrow.cs @@ -60,6 +60,8 @@ namespace Crow.Native unsafe internal static extern byte crow_object_do_layout (crow_object_t* go, LayoutingType layout); [MethodImplAttribute(MethodImplOptions.InternalCall)] unsafe internal static extern byte crow_object_register_layouting (crow_object_t* go, LayoutingType layout); + [MethodImplAttribute(MethodImplOptions.InternalCall)] + unsafe internal static extern void crow_object_register_repaint (crow_object_t* go); [DllImport(lib, CallingConvention = CallingConvention.Cdecl)] diff --git a/src/GraphicObjects/GraphicObject.cs b/src/GraphicObjects/GraphicObject.cs index 4b81ed28..7422abed 100644 --- a/src/GraphicObjects/GraphicObject.cs +++ b/src/GraphicObjects/GraphicObject.cs @@ -888,7 +888,7 @@ namespace Crow if (Width.IsFit || Height.IsFit) RegisterForLayouting (LayoutingType.Sizing); else if (RegisteredLayoutings == LayoutingType.None) - CurrentInterface.EnqueueForRepaint (this); + LibCrow.crow_object_register_repaint (nativeHnd); } /// query an update of the content, a redraw [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -896,7 +896,7 @@ namespace Crow { IsDirty = true; if (RegisteredLayoutings == LayoutingType.None) - CurrentInterface.EnqueueForRepaint (this); + LibCrow.crow_object_register_repaint (nativeHnd); } #endregion @@ -912,7 +912,8 @@ namespace Crow } unsafe public virtual void RegisterForLayouting(LayoutingType layoutType){ - LibCrow.crow_object_register_layouting (this.nativeHnd, layoutType); + lock (CurrentInterface.LayoutMutex) + LibCrow.crow_object_register_layouting (this.nativeHnd, layoutType); } /// trigger dependant sizing component update diff --git a/src/Interface.cs b/src/Interface.cs index 7d5eed13..5c581554 100644 --- a/src/Interface.cs +++ b/src/Interface.cs @@ -382,6 +382,16 @@ namespace Crow } #endregion + public override void AddChild (GraphicObject g) + { + lock(RenderMutex) + base.AddChild (g); + } + public override void RemoveChild (GraphicObject child) + { + lock(RenderMutex) + base.RemoveChild (child); + } #region UPDATE Loops /// Enqueue Graphic object for Repaint, DrawingQueue is locked because -- 2.47.3