Blender  V3.3
Functions
undofile.c File Reference
#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 MainBLO_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)
 
FileReaderBLO_memfile_new_filereader (MemFile *memfile, int undo_direction)
 

Function Documentation

◆ BLO_memfile_chunk_add()

void BLO_memfile_chunk_add ( MemFileWriteData mem_data,
const char *  buf,
size_t  size 
)

◆ BLO_memfile_clear_future()

void BLO_memfile_clear_future ( MemFile memfile)

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().

◆ BLO_memfile_free()

void BLO_memfile_free ( MemFile memfile)

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().

◆ BLO_memfile_main_get()

struct Main* BLO_memfile_main_get ( struct MemFile memfile,
struct Main bmain,
struct Scene **  r_scene 
)

◆ BLO_memfile_merge()

void BLO_memfile_merge ( MemFile first,
MemFile second 
)

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().

◆ BLO_memfile_new_filereader()

FileReader* BLO_memfile_new_filereader ( MemFile memfile,
int  undo_direction 
)

◆ BLO_memfile_write_file()

bool BLO_memfile_write_file ( struct MemFile memfile,
const char *  filepath 
)

Saves .blend using undo buffer.

Returns
success.

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().

◆ BLO_memfile_write_finalize()

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().

◆ BLO_memfile_write_init()

void BLO_memfile_write_init ( MemFileWriteData mem_data,
MemFile written_memfile,
MemFile reference_memfile 
)

◆ undo_close()

static void undo_close ( FileReader reader)
static

Definition at line 327 of file undofile.c.

References MEM_freeN.

Referenced by BLO_memfile_new_filereader().

◆ undo_read()

static ssize_t undo_read ( FileReader reader,
void buffer,
size_t  size 
)
static