Fix T74074: Strokes with timer events don't get pressure values
When processing a timer event WM_event_tablet_data returns 0 instead of the last valid pressure value from the tablet. This always stores the last pressure value and uses it in case a timer event is being processed. Reviewed By: brecht Maniphest Tasks: T74074 Differential Revision: https://developer.blender.org/D6950
This commit is contained in:
committed by
Pablo Dobarro
parent
c04c5ac4f6
commit
a489d77c5b
@@ -118,6 +118,8 @@ typedef struct PaintStroke {
|
||||
float last_pressure;
|
||||
int stroke_mode;
|
||||
|
||||
float last_tablet_event_pressure;
|
||||
|
||||
float zoom_2d;
|
||||
int pen_flip;
|
||||
|
||||
@@ -1355,6 +1357,15 @@ int paint_stroke_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
1.0f :
|
||||
WM_event_tablet_data(event, &stroke->pen_flip, NULL));
|
||||
|
||||
/* When processing a timer event the pressure from the event is 0, so use the last valid
|
||||
* pressure. */
|
||||
if (event->type == TIMER) {
|
||||
pressure = stroke->last_tablet_event_pressure;
|
||||
}
|
||||
else {
|
||||
stroke->last_tablet_event_pressure = pressure;
|
||||
}
|
||||
|
||||
paint_stroke_add_sample(p, stroke, event->mval[0], event->mval[1], pressure);
|
||||
paint_stroke_sample_average(stroke, &sample_average);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user