Commit: 9206c3d40a8287aa9f5102cd9a4080b5aa26385e
Author: Julian Eisel
Date:   Wed Jan 4 02:21:43 2017 +0100
Branches: workspaces
https://developer.blender.org/rB9206c3d40a8287aa9f5102cd9a4080b5aa26385e

Move workspace DNA back into DNA module

Added some special include guards to protect from access from outside of 
BKE_workspace and makesdna.

===================================================================

M       source/blender/CMakeLists.txt
M       source/blender/blenkernel/BKE_workspace.h
M       source/blender/blenkernel/intern/library.c
M       source/blender/blenkernel/intern/workspace.c
M       source/blender/editors/screen/workspace_edit.c
R079    source/blender/blenkernel/intern/workspace_dna.h        
source/blender/makesdna/dna_workspace_types.h
M       source/blender/makesdna/intern/makesdna.c

===================================================================

diff --git a/source/blender/CMakeLists.txt b/source/blender/CMakeLists.txt
index 6f2b78e..1593148 100644
--- a/source/blender/CMakeLists.txt
+++ b/source/blender/CMakeLists.txt
@@ -88,6 +88,7 @@ set(SRC_DNA_INC
        ${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_view2d_types.h
        ${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_view3d_types.h
        ${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_windowmanager_types.h
+       ${CMAKE_CURRENT_SOURCE_DIR}/makesdna/dna_workspace_types.h
        ${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_world_types.h
        ${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_movieclip_types.h
        ${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_tracking_types.h
diff --git a/source/blender/blenkernel/BKE_workspace.h 
b/source/blender/blenkernel/BKE_workspace.h
index 48591d8..9b7eb6c 100644
--- a/source/blender/blenkernel/BKE_workspace.h
+++ b/source/blender/blenkernel/BKE_workspace.h
@@ -91,4 +91,9 @@ void            
BKE_workspace_layout_screen_set(WorkSpaceLayout *layout, struct
 WorkSpaceLayout *BKE_workspace_layout_next_get(const WorkSpaceLayout *layout) 
ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT;
 WorkSpaceLayout *BKE_workspace_layout_prev_get(const WorkSpaceLayout *layout) 
ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT;
 
+/* -------------------------------------------------------------------- */
+/* Don't use outside of BKE! */
+
+WorkSpace *workspace_alloc(void) ATTR_WARN_UNUSED_RESULT;
+
 #endif /* __BKE_WORKSPACE_H__ */
diff --git a/source/blender/blenkernel/intern/library.c 
b/source/blender/blenkernel/intern/library.c
index 2d969df..83142e7 100644
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@ -132,9 +132,6 @@
 
 #include "atomic_ops.h"
 
-/* local DNA files */
-#include "workspace_dna.h"
-
 
 /* GS reads the memory pointed at in a specific ordering. 
  * only use this definition, makes little and big endian systems
@@ -969,7 +966,7 @@ void *BKE_libblock_alloc_notest(short type)
                        id = MEM_callocN(sizeof(CacheFile), "Cache File");
                        break;
                case ID_WS:
-                       id = MEM_callocN(sizeof(WorkSpace), "Workspace");
+                       id = (ID *)workspace_alloc();
                        break;
        }
        return id;
diff --git a/source/blender/blenkernel/intern/workspace.c 
b/source/blender/blenkernel/intern/workspace.c
index 5564e3a..bcbc06f 100644
--- a/source/blender/blenkernel/intern/workspace.c
+++ b/source/blender/blenkernel/intern/workspace.c
@@ -22,6 +22,8 @@
  *  \ingroup bke
  */
 
+#define NAMESPACE_WORKSPACE /* allow including specially guarded 
dna_workspace_types.h */
+
 #include "BLI_utildefines.h"
 
 #include "BKE_global.h"
@@ -32,11 +34,10 @@
 
 #include "DNA_scene_types.h"
 #include "DNA_screen_types.h"
+#include "dna_workspace_types.h"
 
 #include "MEM_guardedalloc.h"
 
-#include "workspace_dna.h"
-
 
 static bool workspaces_is_screen_used(const Main *bmain, bScreen *screen);
 
@@ -44,6 +45,14 @@ static bool workspaces_is_screen_used(const Main *bmain, 
bScreen *screen);
 /* -------------------------------------------------------------------- */
 /* Create, delete, init */
 
+/**
+ * Only to be called by #BKE_libblock_alloc_notest! Always use 
BKE_workspace_add to add a new workspace.
+ */
+WorkSpace *workspace_alloc(void)
+{
+       return MEM_callocN(sizeof(WorkSpace), "Workspace");
+}
+
 WorkSpace *BKE_workspace_add(Main *bmain, const char *name)
 {
        WorkSpace *new_ws = BKE_libblock_alloc(bmain, ID_WS, name);
diff --git a/source/blender/editors/screen/workspace_edit.c 
b/source/blender/editors/screen/workspace_edit.c
index b1bcc03..5586b18 100644
--- a/source/blender/editors/screen/workspace_edit.c
+++ b/source/blender/editors/screen/workspace_edit.c
@@ -84,22 +84,22 @@ WorkSpace *ED_workspace_duplicate(WorkSpace *workspace_old, 
Main *bmain, wmWindo
 {
        WorkSpaceLayout *layout_active_old = 
BKE_workspace_active_layout_get(workspace_old);
        ListBase *layouts_old = BKE_workspace_layouts_get(workspace_old);
-       WorkSpace *worspace_new = BKE_libblock_alloc(bmain, ID_WS, 
BKE_workspace_name_get(workspace_old));
+       WorkSpace *workspace_new = BKE_workspace_add(bmain, 
BKE_workspace_name_get(workspace_old));
 
        BKE_workspace_layout_iter_begin(layout_old, layouts_old->first)
        {
-               WorkSpaceLayout *layout_new = 
ED_workspace_layout_duplicate(worspace_new, layout_old, win);
+               WorkSpaceLayout *layout_new = 
ED_workspace_layout_duplicate(workspace_new, layout_old, win);
 
                if (layout_active_old == layout_old) {
                        bScreen *screen_new = 
BKE_workspace_layout_screen_get(layout_new);
 
                        screen_new_activate_refresh(win, screen_new);
-                       BKE_workspace_active_layout_set(worspace_new, 
layout_new);
+                       BKE_workspace_active_layout_set(workspace_new, 
layout_new);
                }
        }
        BKE_workspace_layout_iter_end;
 
-       return worspace_new;
+       return workspace_new;
 }
 
 /**
diff --git a/source/blender/blenkernel/intern/workspace_dna.h 
b/source/blender/makesdna/dna_workspace_types.h
similarity index 79%
rename from source/blender/blenkernel/intern/workspace_dna.h
rename to source/blender/makesdna/dna_workspace_types.h
index 97cbffc..4a68acb 100644
--- a/source/blender/blenkernel/intern/workspace_dna.h
+++ b/source/blender/makesdna/dna_workspace_types.h
@@ -18,14 +18,18 @@
  * ***** END GPL LICENSE BLOCK *****
  */
 
-/** \file blender/blenkernel/intern/workspace_dna.h
- *  \ingroup bke
+/** \file DNA_workspace_types.h
+ *  \ingroup DNA
  *
- * Local header with WorkSpace DNA types. makesdna.c includes this.
+ * Only use with API in BKE_workspace.h!
  */
 
-#ifndef __WORKSPACE_DNA_H__
-#define __WORKSPACE_DNA_H__
+#ifndef __DNA_WORKSPACE_TYPES_H__
+#define __DNA_WORKSPACE_TYPES_H__
+
+#if !defined(NAMESPACE_WORKSPACE) && !defined(NAMESPACE_DNA)
+#  error "This file shouldn't be included outside of workspace namespace."
+#endif
 
 /**
  * Layouts are basically bScreens. We use this struct to wrap a reference to a 
screen so that we can store it in
@@ -45,4 +49,4 @@ typedef struct WorkSpace {
        struct WorkSpaceLayout *new_layout; /* temporary when switching screens 
*/
 } WorkSpace;
 
-#endif /* __WORKSPACE_DNA_H__ */
+#endif /* __DNA_WORKSPACE_TYPES_H__ */
diff --git a/source/blender/makesdna/intern/makesdna.c 
b/source/blender/makesdna/intern/makesdna.c
index 1ba83ff..6fef41d 100644
--- a/source/blender/makesdna/intern/makesdna.c
+++ b/source/blender/makesdna/intern/makesdna.c
@@ -56,6 +56,8 @@
 
 #include "../blenlib/BLI_sys_types.h" // for intptr_t support
 
+#define NAMESPACE_DNA /* Allow including DNA files for specially guarded 
namespaces */
+
 #define SDNA_MAX_FILENAME_LENGTH 255
 
 
@@ -130,9 +132,7 @@ static const char *includefiles[] = {
        "DNA_freestyle_types.h",
        "DNA_linestyle_types.h",
        "DNA_cachefile_types.h",
-
-       /* local DNA headers */
-       "../blenkernel/intern/workspace_dna.h",
+       "dna_workspace_types.h",
 
        /* see comment above before editing! */
 
@@ -1346,8 +1346,6 @@ int main(int argc, char **argv)
 #include "DNA_freestyle_types.h"
 #include "DNA_linestyle_types.h"
 #include "DNA_cachefile_types.h"
-
-/* local DNA headers */
-#include "../blenkernel/intern/workspace_dna.h"
+#include "dna_workspace_types.h"
 
 /* end of list */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to