Fix #136077: Crash transforming in background mode with an active region
Don't attempt to add region draw callbacks in background mode. This caused by the regions runtime being null. Even if the runtime was initialized, drawing callbacks aren't needed in background mode. Ref !136078
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
|
||||
#include "BKE_context.hh"
|
||||
#include "BKE_editmesh.hh"
|
||||
#include "BKE_global.hh"
|
||||
#include "BKE_layer.hh"
|
||||
#include "BKE_mask.h"
|
||||
#include "BKE_screen.hh"
|
||||
@@ -1891,26 +1892,28 @@ bool initTransform(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
|
||||
|
||||
initTransInfo(C, t, op, event);
|
||||
|
||||
if (t->spacetype == SPACE_VIEW3D) {
|
||||
t->draw_handle_view = ED_region_draw_cb_activate(
|
||||
t->region->runtime->type, drawTransformView, t, REGION_DRAW_POST_VIEW);
|
||||
t->draw_handle_pixel = ED_region_draw_cb_activate(
|
||||
t->region->runtime->type, drawTransformPixel, t, REGION_DRAW_POST_PIXEL);
|
||||
t->draw_handle_cursor = WM_paint_cursor_activate(
|
||||
SPACE_TYPE_ANY, RGN_TYPE_ANY, transform_draw_cursor_poll, transform_draw_cursor_draw, t);
|
||||
}
|
||||
else if (ELEM(t->spacetype,
|
||||
SPACE_IMAGE,
|
||||
SPACE_CLIP,
|
||||
SPACE_NODE,
|
||||
SPACE_GRAPH,
|
||||
SPACE_ACTION,
|
||||
SPACE_SEQ))
|
||||
{
|
||||
t->draw_handle_view = ED_region_draw_cb_activate(
|
||||
t->region->runtime->type, drawTransformView, t, REGION_DRAW_POST_VIEW);
|
||||
t->draw_handle_cursor = WM_paint_cursor_activate(
|
||||
SPACE_TYPE_ANY, RGN_TYPE_ANY, transform_draw_cursor_poll, transform_draw_cursor_draw, t);
|
||||
if (!G.background) {
|
||||
if (t->spacetype == SPACE_VIEW3D) {
|
||||
t->draw_handle_view = ED_region_draw_cb_activate(
|
||||
t->region->runtime->type, drawTransformView, t, REGION_DRAW_POST_VIEW);
|
||||
t->draw_handle_pixel = ED_region_draw_cb_activate(
|
||||
t->region->runtime->type, drawTransformPixel, t, REGION_DRAW_POST_PIXEL);
|
||||
t->draw_handle_cursor = WM_paint_cursor_activate(
|
||||
SPACE_TYPE_ANY, RGN_TYPE_ANY, transform_draw_cursor_poll, transform_draw_cursor_draw, t);
|
||||
}
|
||||
else if (ELEM(t->spacetype,
|
||||
SPACE_IMAGE,
|
||||
SPACE_CLIP,
|
||||
SPACE_NODE,
|
||||
SPACE_GRAPH,
|
||||
SPACE_ACTION,
|
||||
SPACE_SEQ))
|
||||
{
|
||||
t->draw_handle_view = ED_region_draw_cb_activate(
|
||||
t->region->runtime->type, drawTransformView, t, REGION_DRAW_POST_VIEW);
|
||||
t->draw_handle_cursor = WM_paint_cursor_activate(
|
||||
SPACE_TYPE_ANY, RGN_TYPE_ANY, transform_draw_cursor_poll, transform_draw_cursor_draw, t);
|
||||
}
|
||||
}
|
||||
|
||||
create_trans_data(C, t); /* Make #TransData structs from selection. */
|
||||
|
||||
Reference in New Issue
Block a user