Listing the "Blender Foundation" as copyright holder implied the Blender Foundation holds copyright to files which may include work from many developers. While keeping copyright on headers makes sense for isolated libraries, Blender's own code may be refactored or moved between files in a way that makes the per file copyright holders less meaningful. Copyright references to the "Blender Foundation" have been replaced with "Blender Authors", with the exception of `./extern/` since these this contains libraries which are more isolated, any changed to license headers there can be handled on a case-by-case basis. Some directories in `./intern/` have also been excluded: - `./intern/cycles/` it's own `AUTHORS` file is planned. - `./intern/opensubdiv/`. An "AUTHORS" file has been added, using the chromium projects authors file as a template. Design task: #110784 Ref !110783.
63 lines
1.8 KiB
C++
63 lines
1.8 KiB
C++
/* SPDX-FileCopyrightText: 2019 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/** \file
|
|
* \ingroup depsgraph
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "DNA_ID.h"
|
|
|
|
#include "intern/eval/deg_eval_runtime_backup_animation.h"
|
|
#include "intern/eval/deg_eval_runtime_backup_gpencil.h"
|
|
#include "intern/eval/deg_eval_runtime_backup_movieclip.h"
|
|
#include "intern/eval/deg_eval_runtime_backup_object.h"
|
|
#include "intern/eval/deg_eval_runtime_backup_scene.h"
|
|
#include "intern/eval/deg_eval_runtime_backup_sound.h"
|
|
#include "intern/eval/deg_eval_runtime_backup_volume.h"
|
|
|
|
namespace blender::deg {
|
|
|
|
struct Depsgraph;
|
|
|
|
class RuntimeBackup {
|
|
public:
|
|
explicit RuntimeBackup(const Depsgraph *depsgraph);
|
|
|
|
/* NOTE: Will reset all runtime fields which has been backed up to nullptr. */
|
|
void init_from_id(ID *id);
|
|
|
|
/* Restore fields to the given ID. */
|
|
void restore_to_id(ID *id);
|
|
|
|
/* Denotes whether init_from_id did put anything into the backup storage.
|
|
* This will not be the case when init_from_id() is called for an ID which has never been
|
|
* copied-on-write. In this case there is no need to backup or restore anything.
|
|
*
|
|
* It also allows to have restore() logic to be symmetrical to init() without need to worry
|
|
* that init() might not have happened.
|
|
*
|
|
* In practice this is used by audio system to lock audio while scene is going through
|
|
* copy-on-write mechanism. */
|
|
bool have_backup;
|
|
|
|
/* Struct members of the ID pointer. */
|
|
struct {
|
|
void *py_instance;
|
|
} id_data;
|
|
|
|
AnimationBackup animation_backup;
|
|
SceneBackup scene_backup;
|
|
SoundBackup sound_backup;
|
|
ObjectRuntimeBackup object_backup;
|
|
DrawDataList drawdata_backup;
|
|
DrawDataList *drawdata_ptr;
|
|
MovieClipBackup movieclip_backup;
|
|
VolumeBackup volume_backup;
|
|
GPencilBackup gpencil_backup;
|
|
};
|
|
|
|
} // namespace blender::deg
|