Blender
V3.3
|
#include <errno.h>
#include <fcntl.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "MEM_guardedalloc.h"
#include "DNA_listBase.h"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
#include "BLO_readfile.h"
#include "BLO_undofile.h"
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "BKE_undo_system.h"
#include "BLI_strict_flags.h"
Go to the source code of this file.
Functions | |
void | BLO_memfile_free (MemFile *memfile) |
void | BLO_memfile_merge (MemFile *first, MemFile *second) |
void | BLO_memfile_clear_future (MemFile *memfile) |
void | BLO_memfile_write_init (MemFileWriteData *mem_data, MemFile *written_memfile, MemFile *reference_memfile) |
void | BLO_memfile_write_finalize (MemFileWriteData *mem_data) |
void | BLO_memfile_chunk_add (MemFileWriteData *mem_data, const char *buf, size_t size) |
struct Main * | BLO_memfile_main_get (struct MemFile *memfile, struct Main *bmain, struct Scene **r_scene) |
bool | BLO_memfile_write_file (struct MemFile *memfile, const char *filepath) |
static ssize_t | undo_read (FileReader *reader, void *buffer, size_t size) |
static void | undo_close (FileReader *reader) |
FileReader * | BLO_memfile_new_filereader (MemFile *memfile, int undo_direction) |
void BLO_memfile_chunk_add | ( | MemFileWriteData * | mem_data, |
const char * | buf, | ||
size_t | size | ||
) |
Definition at line 137 of file undofile.c.
References BLI_addtail(), MemFileChunk::buf, MemFile::chunks, MemFileWriteData::current_id_session_uuid, MemFileChunk::id_session_uuid, MemFileChunk::is_identical, MemFileChunk::is_identical_future, MEM_mallocN, MemFileChunk::next, NULL, MemFileWriteData::reference_current_chunk, size(), MemFileChunk::size, MemFile::size, and MemFileWriteData::written_memfile.
Referenced by writedata_do_write().
Clear is_identical_future before adding next memfile.
Definition at line 89 of file undofile.c.
References MemFile::chunks, and LISTBASE_FOREACH.
Referenced by BKE_memfile_undo_encode().
Not memfile itself.
Definition at line 41 of file undofile.c.
References BLI_pophead(), MemFileChunk::buf, MemFile::chunks, MemFileChunk::is_identical, MEM_freeN, and MemFile::size.
Referenced by BKE_memfile_undo_free(), and BLO_memfile_merge().
struct Main* BLO_memfile_main_get | ( | struct MemFile * | memfile, |
struct Main * | bmain, | ||
struct Scene ** | r_scene | ||
) |
Definition at line 175 of file undofile.c.
References BKE_main_blendfile_path(), BLO_read_from_memfile(), BlendFileData::curscene, BlendFileData::main, MEM_freeN, and NULL.
Result is that 'first' is being freed. to keep list of memfiles consistent, 'first' is always first in list.
Definition at line 54 of file undofile.c.
References BLI_assert, BLI_ghash_free(), BLI_ghash_insert(), BLI_ghash_lookup(), BLI_ghash_new(), BLI_ghashutil_ptrcmp(), BLI_ghashutil_ptrhash(), BLO_memfile_free(), MemFile::chunks, ListBase::first, MemFileChunk::is_identical, and NULL.
Referenced by memfile_undosys_step_free().
FileReader* BLO_memfile_new_filereader | ( | MemFile * | memfile, |
int | undo_direction | ||
) |
Definition at line 332 of file undofile.c.
References FileReader::close, MEM_callocN, UndoReader::memfile, NULL, FileReader::read, UndoReader::reader, FileReader::seek, undo_close(), UndoReader::undo_direction, and undo_read().
Referenced by blo_filedata_from_memfile().
Saves .blend using undo buffer.
Definition at line 198 of file undofile.c.
References BLI_open(), MemFileChunk::buf, MemFile::chunks, file, Main::filepath, ListBase::first, MemFileChunk::next, O_BINARY, oflags, and MemFileChunk::size.
Referenced by sig_handle_crash(), wm_autosave_write(), and WM_exit_ex().
void BLO_memfile_write_finalize | ( | MemFileWriteData * | mem_data | ) |
Definition at line 130 of file undofile.c.
References BLI_ghash_free(), MemFileWriteData::id_session_uuid_mapping, and NULL.
Referenced by mywrite_end().
void BLO_memfile_write_init | ( | MemFileWriteData * | mem_data, |
MemFile * | written_memfile, | ||
MemFile * | reference_memfile | ||
) |
Definition at line 96 of file undofile.c.
References BLI_assert_unreachable, BLI_ghash_ensure_p(), BLI_ghash_new(), BLI_ghashutil_intcmp(), BLI_ghashutil_inthash_p_simple(), MemFile::chunks, ELEM, ListBase::first, MemFileWriteData::id_session_uuid_mapping, LISTBASE_FOREACH, MAIN_ID_SESSION_UUID_UNSET, NULL, POINTER_FROM_UINT, MemFileWriteData::reference_current_chunk, MemFileWriteData::reference_memfile, and MemFileWriteData::written_memfile.
Referenced by mywrite_begin().
|
static |
Definition at line 327 of file undofile.c.
References MEM_freeN.
Referenced by BLO_memfile_new_filereader().
|
static |
Definition at line 252 of file undofile.c.
References MemFileChunk::buf, buffer, MemFile::chunks, ListBase::first, MemFileChunk::is_identical, MemFileChunk::is_identical_future, UndoReader::memchunk_identical, UndoReader::memfile, MemFileChunk::next, NULL, offset, FileReader::offset, POINTER_OFFSET, UndoReader::reader, size(), MemFileChunk::size, SIZE_MAX, STEP_REDO, and UndoReader::undo_direction.
Referenced by BLO_memfile_new_filereader().