]> O.S.I.I.S - jp/vkvg.git/commitdiff
save restore debug and test
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Fri, 22 Mar 2019 13:33:08 +0000 (14:33 +0100)
committerj-p <jp_bruyere@hotmail.com>
Sat, 6 Apr 2019 12:40:34 +0000 (14:40 +0200)
src/vkvg_context.c
tests/save_restore.c [new file with mode: 0644]

index 2bec98f75a5539e40d506c4965b2bb4ab332029a..4245307996bd140848c6a20b0547a10be5f9af33 100644 (file)
@@ -735,6 +735,7 @@ void vkvg_save (VkvgContext ctx){
                         VK_IMAGE_USAGE_TRANSFER_SRC_BIT|VK_IMAGE_USAGE_TRANSFER_DST_BIT);
 
     vkh_cmd_begin (ctx->cmd, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT);
+    ctx->cmdStarted = true;
 
     vkh_image_set_layout (ctx->cmd, ctx->pSurf->stencilMS, VK_IMAGE_ASPECT_STENCIL_BIT,
                           VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
@@ -806,11 +807,13 @@ void vkvg_restore (VkvgContext ctx){
 
     ctx->pushConsts   = sav->pushConsts;
 
-    _update_cur_pattern(ctx, sav->pattern);
+    if (sav->pattern)
+        _update_cur_pattern(ctx, sav->pattern);
 
     _flush_cmd_buff(ctx);
 
     vkh_cmd_begin (ctx->cmd, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT);
+    ctx->cmdStarted = true;
 
     vkh_image_set_layout (ctx->cmd, ctx->pSurf->stencilMS, VK_IMAGE_ASPECT_STENCIL_BIT,
                           VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
diff --git a/tests/save_restore.c b/tests/save_restore.c
new file mode 100644 (file)
index 0000000..aac9ae1
--- /dev/null
@@ -0,0 +1,32 @@
+#include "test.h"
+
+void test(){
+    VkvgContext ctx = vkvg_create(surf);
+
+    vkvg_set_source_rgba(ctx,1,0,0,1);
+    vkvg_set_line_width(ctx,10);
+    vkvg_rectangle(ctx,100,100,200,200);
+    vkvg_stroke(ctx);
+    vkvg_set_source_rgba(ctx,0,1,0,1);
+
+    vkvg_save(ctx);
+
+    vkvg_set_source_rgba(ctx,0,1,1,1);
+    vkvg_set_line_width(ctx,1);
+    vkvg_rectangle(ctx,200,200,200,200);
+    vkvg_fill(ctx);
+
+    vkvg_restore(ctx);
+
+    vkvg_rectangle(ctx,100,100,200,200);
+    vkvg_stroke(ctx);
+
+    vkvg_destroy(ctx);
+}
+
+int main(int argc, char *argv[]) {
+
+    perform_test (test, 600, 800);
+
+    return 0;
+}