[Bf-blender-cvs] [342cc12] asset-engine: Merge branch 'master' into asset-engine

Bastien Montagne noreply at git.blender.org
Mon Dec 12 16:32:26 CET 2016


Commit: 342cc1212f95c59ca4e0dbc127c2cd68a1379e49
Author: Bastien Montagne
Date:   Mon Dec 12 16:32:11 2016 +0100
Branches: asset-engine
https://developer.blender.org/rB342cc1212f95c59ca4e0dbc127c2cd68a1379e49

Merge branch 'master' into asset-engine

Conflicts:
	source/blender/blenkernel/intern/library.c

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



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

diff --cc source/blender/blenkernel/intern/library_remap.c
index 223780f,4f1f6d9..cfa719e
--- a/source/blender/blenkernel/intern/library_remap.c
+++ b/source/blender/blenkernel/intern/library_remap.c
@@@ -680,6 -680,35 +680,35 @@@ void BKE_libblock_relink_ex
  	}
  }
  
+ static int id_relink_to_newid_looper(void *UNUSED(user_data), ID *UNUSED(self_id), ID **id_pointer, const int cd_flag)
+ {
+ 	ID *id = *id_pointer;
+ 	if (id) {
+ 		/* See: NEW_ID macro */
+ 		if (id->newid) {
+ 			BKE_library_update_ID_link_user(id->newid, id, cd_flag);
+ 			*id_pointer = id->newid;
+ 		}
+ 		else if (id->tag & LIB_TAG_NEW) {
+ 			id->tag &= ~LIB_TAG_NEW;
+ 			BKE_libblock_relink_to_newid(id);
+ 		}
+ 	}
+ 	return IDWALK_RET_NOP;
+ }
+ 
+ /** Similar to libblock_relink_ex, but is remapping IDs to their newid value if non-NULL, in given \a id.
+  *
+  * Very specific usage, not sure we'll keep it on the long run, currently only used in Object duplication code...
+  */
+ void BKE_libblock_relink_to_newid(ID *id)
+ {
 -	if (ID_IS_LINKED_DATABLOCK(id))
++	if (ID_IS_LINKED(id))
+ 		return;
+ 
+ 	BKE_library_foreach_ID_link(id, id_relink_to_newid_looper, NULL, 0);
+ }
+ 
  void BKE_libblock_free_data(Main *UNUSED(bmain), ID *id)
  {
  	if (id->properties) {
diff --cc source/blender/makesrna/intern/rna_asset.c
index 812b435,0000000..876d3af
mode 100644,000000..100644
--- a/source/blender/makesrna/intern/rna_asset.c
+++ b/source/blender/makesrna/intern/rna_asset.c
@@@ -1,1415 -1,0 +1,1415 @@@
 +/*
 + * ***** BEGIN GPL LICENSE BLOCK *****
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License
 + * as published by the Free Software Foundation; either version 2
 + * of the License, or (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program; if not, write to the Free Software Foundation,
 + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 + *
 + * Contributor(s): Blender Foundation (2015)
 + *
 + * ***** END GPL LICENSE BLOCK *****
 + */
 +
 +/** \file blender/makesrna/intern/rna_asset.c
 + *  \ingroup RNA
 + */
 +
 +#include "BLI_utildefines.h"
 +#include "BLI_fileops_types.h"
 +#include "BLI_path_util.h"
 +
 +#include "DNA_space_types.h"
 +
 +#include "RNA_define.h"
 +#include "RNA_enum_types.h"
 +
 +#include "rna_internal.h"
 +
 +#include "BKE_asset_engine.h"
 +#include "BKE_idprop.h"
 +
 +#include "WM_types.h"
 +
 +#ifdef RNA_RUNTIME
 +
 +#include "MEM_guardedalloc.h"
 +
 +#include "RNA_access.h"
 +
 +#include "BKE_context.h"
 +#include "BKE_report.h"
 +
 +
 +/* AssetUUID */
 +
 +static void rna_AssetUUID_preview_size_get(PointerRNA *ptr, int *values)
 +{
 +	AssetUUID *uuid = ptr->data;
 +
 +	values[0] = uuid->width;
 +	values[1] = uuid->height;
 +}
 +
 +static void rna_AssetUUID_preview_size_set(PointerRNA *ptr, const int *values)
 +{
 +	AssetUUID *uuid = ptr->data;
 +
 +	uuid->width = values[0];
 +	uuid->height = values[1];
 +
 +	MEM_SAFE_FREE(uuid->ibuff);
 +}
 +
 +
 +static int rna_AssetUUID_preview_pixels_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION])
 +{
 +	AssetUUID *uuid = ptr->data;
 +
 +	length[0] = (uuid->ibuff == NULL) ? 0 : uuid->width * uuid->height;
 +
 +	return length[0];
 +}
 +
 +static void rna_AssetUUID_preview_pixels_get(PointerRNA *ptr, int *values)
 +{
 +	AssetUUID *uuid = ptr->data;
 +
 +	memcpy(values, uuid->ibuff, uuid->width * uuid->height * sizeof(unsigned int));
 +}
 +
 +static void rna_AssetUUID_preview_pixels_set(PointerRNA *ptr, const int *values)
 +{
 +	AssetUUID *uuid = ptr->data;
 +
 +	if (!uuid->ibuff) {
 +		uuid->ibuff = MEM_mallocN(sizeof(*uuid->ibuff) * 4 * uuid->width * uuid->height, __func__);
 +	}
 +
 +	memcpy(uuid->ibuff, values, uuid->width * uuid->height * sizeof(unsigned int));
 +}
 +
 +
 +/* Asset listing... */
 +
 +/* Revisions. */
 +static int rna_AssetRevision_size_get(PointerRNA *ptr)
 +{
 +	FileDirEntryRevision *revision = ptr->data;
 +	return (int)revision->size;
 +}
 +
 +static void rna_AssetRevision_size_set(PointerRNA *ptr, const int val)
 +{
 +	FileDirEntryRevision *revision = ptr->data;
 +	revision->size = (int64_t)val;
 +}
 +
 +static int rna_AssetRevision_timestamp_get(PointerRNA *ptr)
 +{
 +	FileDirEntryRevision *revision = ptr->data;
 +	return (int)revision->time;
 +}
 +
 +static void rna_AssetRevision_timestamp_set(PointerRNA *ptr, const int val)
 +{
 +	FileDirEntryRevision *revision = ptr->data;
 +	revision->time = (int64_t)val;
 +}
 +
 +/* Variants. */
 +static FileDirEntryRevision *rna_AssetVariant_revisions_add(FileDirEntryVariant *variant/*, ReportList *reports,*/)
 +{
 +	FileDirEntryRevision *revision = MEM_callocN(sizeof(*revision), __func__);
 +
 +	BLI_addtail(&variant->revisions, revision);
 +	variant->nbr_revisions++;
 +
 +	return revision;
 +}
 +
 +static PointerRNA rna_AssetVariant_active_revision_get(PointerRNA *ptr)
 +{
 +	FileDirEntryVariant *variant = ptr->data;
 +	return rna_pointer_inherit_refine(ptr, &RNA_AssetRevision, BLI_findlink(&variant->revisions, variant->act_revision));
 +}
 +
 +static void rna_AssetVariant_active_revision_set(PointerRNA *ptr, PointerRNA value)
 +{
 +	FileDirEntryVariant *variant = ptr->data;
 +	FileDirEntryRevision *revision = value.data;
 +
 +	variant->act_revision = BLI_findindex(&variant->revisions, revision);
 +}
 +
 +static void rna_AssetVariant_name_get(struct PointerRNA *ptr, char *value)
 +{
 +	FileDirEntryVariant *variant = ptr->data;
 +	if (variant->name) {
 +		strcpy(value, variant->name);
 +	}
 +	else {
 +		*value = '\0';
 +	}
 +}
 +
 +static int rna_AssetVariant_name_length(struct PointerRNA *ptr)
 +{
 +	FileDirEntryVariant *variant = ptr->data;
 +	return variant->name ? strlen(variant->name) : 0;
 +}
 +
 +static void rna_AssetVariant_name_set(struct PointerRNA *ptr, const char *value)
 +{
 +	FileDirEntryVariant *variant = ptr->data;
 +	MEM_SAFE_FREE(variant->name);
 +	if (value[0] != '\0') {
 +		variant->name = BLI_strdup(value);
 +	}
 +}
 +
 +static void rna_AssetVariant_description_get(struct PointerRNA *ptr, char *value)
 +{
 +	FileDirEntryVariant *variant = ptr->data;
 +	if (variant->description) {
 +		strcpy(value, variant->description);
 +	}
 +	else {
 +		*value = '\0';
 +	}
 +}
 +
 +static int rna_AssetVariant_description_length(struct PointerRNA *ptr)
 +{
 +	FileDirEntryVariant *variant = ptr->data;
 +	return variant->description ? strlen(variant->description) : 0;
 +}
 +
 +static void rna_AssetVariant_description_set(struct PointerRNA *ptr, const char *value)
 +{
 +	FileDirEntryVariant *variant = ptr->data;
 +	MEM_SAFE_FREE(variant->description);
 +	if (value[0] != '\0') {
 +		variant->description = BLI_strdup(value);
 +	}
 +}
 +
 +/* Entries. */
 +static PointerRNA rna_AssetEntry_active_variant_get(PointerRNA *ptr)
 +{
 +	FileDirEntry *entry = ptr->data;
 +	return rna_pointer_inherit_refine(ptr, &RNA_AssetVariant, BLI_findlink(&entry->variants, entry->act_variant));
 +}
 +
 +static void rna_AssetEntry_active_variant_set(PointerRNA *ptr, PointerRNA value)
 +{
 +	FileDirEntry *entry = ptr->data;
 +	FileDirEntryVariant *variant = value.data;
 +
 +	entry->act_variant = BLI_findindex(&entry->variants, variant);
 +}
 +
 +static FileDirEntryVariant *rna_AssetEntry_variants_add(FileDirEntry *entry/*, ReportList *reports,*/)
 +{
 +	FileDirEntryVariant *variant = MEM_callocN(sizeof(*variant), __func__);
 +
 +	BLI_addtail(&entry->variants, variant);
 +	entry->nbr_variants++;
 +
 +	return variant;
 +}
 +
 +static void rna_AssetEntry_relpath_get(struct PointerRNA *ptr, char *value)
 +{
 +	FileDirEntry *entry = ptr->data;
 +	if (entry->relpath) {
 +		strcpy(value, entry->relpath);
 +	}
 +	else {
 +		*value = '\0';
 +	}
 +}
 +
 +static int rna_AssetEntry_relpath_length(struct PointerRNA *ptr)
 +{
 +	FileDirEntry *entry = ptr->data;
 +	return entry->relpath ? strlen(entry->relpath) : 0;
 +}
 +
 +static void rna_AssetEntry_relpath_set(struct PointerRNA *ptr, const char *value)
 +{
 +	FileDirEntry *entry = ptr->data;
 +	if (entry->relpath) {
 +		MEM_freeN(entry->relpath);
 +	}
 +	entry->relpath = BLI_strdup(value);
 +}
 +
 +static void rna_AssetEntry_name_get(struct PointerRNA *ptr, char *value)
 +{
 +	FileDirEntry *entry = ptr->data;
 +	if (entry->name) {
 +		strcpy(value, entry->name);
 +	}
 +	else {
 +		*value = '\0';
 +	}
 +}
 +
 +static int rna_AssetEntry_name_length(struct PointerRNA *ptr)
 +{
 +	FileDirEntry *entry = ptr->data;
 +	return entry->name ? strlen(entry->name) : 0;
 +}
 +
 +static void rna_AssetEntry_name_set(struct PointerRNA *ptr, const char *value)
 +{
 +	FileDirEntry *entry = ptr->data;
 +	MEM_SAFE_FREE(entry->name);
 +	if (value[0] != '\0') {
 +		entry->name = BLI_strdup(value);
 +	}
 +}
 +
 +static void rna_AssetEntry_description_get(struct PointerRNA *ptr, char *value)
 +{
 +	FileDirEntry *entry = ptr->data;
 +	if (entry->description) {
 +		strcpy(value, entry->description);
 +	}
 +	else {
 +		*value = '\0';
 +	}
 +}
 +
 +static int rna_AssetEntry_description_length(struct PointerRNA *ptr)
 +{
 +	FileDirEntry *entry = ptr->data;
 +	return entry->description ? strlen(entry->description) : 0;
 +}
 +
 +static void rna_AssetEntry_description_set(struct PointerRNA *ptr, const char *value)
 +{
 +	FileDirEntry *entry = ptr->data;
 +	MEM_SAFE_FREE(entry->description);
 +	if (value[0] != '\0') {
 +		entry->description = BLI_strdup(value);
 +	}
 +}
 +
 +/* Entries Array. */
 +static PointerRNA rna_AssetList_active_entry_get(PointerRNA *ptr)
 +{
 +	FileDirEntryArr *arr = ptr->data;
 +	return rna_pointer_inherit_refine(ptr, &RNA_AssetEntry, arr->entries.first /* BLI_findlink(&arr->entries, 0) */);
 +}
 +
 +static void rna_AssetList_active_entry_set(PointerRNA *ptr, PointerRNA value)
 +{
 +	FileDirEntryArr *arr = ptr->data;
 +	FileDirEntry *entry = value.data;
 +
 +	BLI_remlink_safe(&arr->entries, entry);
 +	BLI_addhead(&arr->entries, entry);
 +}
 +
 +static int rna_AssetList_active_entry

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list