GPv3: Crash when drawing on new layers
Crash occurs during drawing on fresh added layer due to missing keyframe on it. Use `insert_frame` to add frame on new layer. This is similar to GPv2 (`BKE_gpencil_layer_frame_get` is used there to add default keyframe on new layer) Pull Request: https://projects.blender.org/blender/blender/pulls/109321
This commit is contained in:
committed by
Pratik Borhade
parent
1a0be7be9d
commit
d66e12104b
@@ -16,6 +16,8 @@
|
||||
#include "RNA_access.h"
|
||||
#include "RNA_define.h"
|
||||
|
||||
#include "DNA_scene_types.h"
|
||||
|
||||
#include "WM_api.h"
|
||||
|
||||
namespace blender::ed::greasepencil {
|
||||
@@ -24,21 +26,27 @@ static int grease_pencil_layer_add_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
using namespace blender::bke::greasepencil;
|
||||
Object *object = CTX_data_active_object(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
GreasePencil &grease_pencil = *static_cast<GreasePencil *>(object->data);
|
||||
|
||||
int new_layer_name_length;
|
||||
char *new_layer_name = RNA_string_get_alloc(
|
||||
op->ptr, "new_layer_name", nullptr, 0, &new_layer_name_length);
|
||||
|
||||
grease_pencil.add_empty_drawings(1);
|
||||
GreasePencilFrame frame{grease_pencil.drawings().size() - 1, 0, BEZT_KEYTYPE_KEYFRAME};
|
||||
|
||||
if (grease_pencil.has_active_layer()) {
|
||||
LayerGroup &active_group = grease_pencil.get_active_layer()->parent_group();
|
||||
Layer &new_layer = grease_pencil.add_layer_after(
|
||||
active_group, grease_pencil.get_active_layer_for_write(), new_layer_name);
|
||||
grease_pencil.set_active_layer(&new_layer);
|
||||
new_layer.insert_frame(scene->r.cfra, frame);
|
||||
}
|
||||
else {
|
||||
Layer &new_layer = grease_pencil.add_layer(new_layer_name);
|
||||
grease_pencil.set_active_layer(&new_layer);
|
||||
new_layer.insert_frame(scene->r.cfra, frame);
|
||||
}
|
||||
|
||||
MEM_SAFE_FREE(new_layer_name);
|
||||
|
||||
Reference in New Issue
Block a user