[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52111] trunk/blender/source/blender: Four fixes (own collection)

Ton Roosendaal ton at blender.org
Sun Nov 11 19:33:35 CET 2012


Revision: 52111
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52111
Author:   ton
Date:     2012-11-11 18:33:35 +0000 (Sun, 11 Nov 2012)
Log Message:
-----------
Four fixes (own collection)

- Screencast: stops working on window resize - crashes movie file output
- Screencast now draws simple brush overlay to indicate mouse cursor.
- Greasepencil now works again to use MMB for view rotates
  (and missed proper redraw signal for toolbar, at end of paint)

Modified Paths:
--------------
    trunk/blender/source/blender/editors/gpencil/gpencil_paint.c
    trunk/blender/source/blender/editors/screen/screendump.c
    trunk/blender/source/blender/editors/space_view3d/space_view3d.c
    trunk/blender/source/blender/windowmanager/intern/wm_window.c

Modified: trunk/blender/source/blender/editors/gpencil/gpencil_paint.c
===================================================================
--- trunk/blender/source/blender/editors/gpencil/gpencil_paint.c	2012-11-11 18:28:45 UTC (rev 52110)
+++ trunk/blender/source/blender/editors/gpencil/gpencil_paint.c	2012-11-11 18:33:35 UTC (rev 52111)
@@ -1800,7 +1800,7 @@
 static int gpencil_draw_modal(bContext *C, wmOperator *op, wmEvent *event)
 {
 	tGPsdata *p = op->customdata;
-	int estate = OPERATOR_RUNNING_MODAL; /* default exit state - we don't pass on events, GP is used with key-modifiers */
+	int estate = OPERATOR_PASS_THROUGH; /* default exit state */
 	
 	/* if (event->type == NDOF_MOTION)
 	 *    return OPERATOR_PASS_THROUGH;
@@ -1815,8 +1815,12 @@
 	 * in 3D space.
 	 */
 
-	/* printf("\tGP - handle modal event...\n"); */
+	/* we don't pass on key events, GP is used with key-modifiers - prevents Dkey to insert drivers */
+	if (ISKEYBOARD(event->type))
+		estate = OPERATOR_RUNNING_MODAL;
 	
+	//printf("\tGP - handle modal event...\n");
+	
 	/* exit painting mode (and/or end current stroke) 
 	 * NOTE: cannot do RIGHTMOUSE (as is standard for cancelling) as that would break polyline [#32647] 
 	 */

Modified: trunk/blender/source/blender/editors/screen/screendump.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screendump.c	2012-11-11 18:28:45 UTC (rev 52110)
+++ trunk/blender/source/blender/editors/screen/screendump.c	2012-11-11 18:33:35 UTC (rev 52111)
@@ -30,6 +30,7 @@
 
 
 #include <string.h>
+#include <math.h>
 
 #include "MEM_guardedalloc.h"
 
@@ -52,6 +53,7 @@
 #include "BKE_writeavi.h"
 
 #include "BIF_gl.h"
+#include "BIF_glutil.h"
 
 #include "RNA_access.h"
 #include "RNA_define.h"
@@ -278,6 +280,7 @@
 typedef struct ScreenshotJob {
 	Main *bmain;
 	Scene *scene;
+	wmWindowManager *wm;
 	unsigned int *dumprect;
 	int x, y, dumpsx, dumpsy;
 	short *stop;
@@ -395,6 +398,54 @@
 	BKE_report(&sj->reports, RPT_INFO, "Screencast job stopped");
 }
 
+/* Helper callback for drawing the cursor itself */
+static void screencast_draw_cursor(bContext *UNUSED(C), int x, int y, void *UNUSED(p_ptr))
+{
+	
+	glPushMatrix();
+	
+	glTranslatef((float)x, (float)y, 0.0f);
+	
+	
+	glEnable(GL_LINE_SMOOTH);
+	glEnable(GL_BLEND);
+	
+	glColor4ub(0, 0, 0, 32);
+	glutil_draw_filled_arc(0.0, M_PI * 2.0, 20, 40);
+	
+	glColor4ub(255, 255, 255, 128);
+	glutil_draw_lined_arc(0.0, M_PI * 2.0, 20, 40);
+	
+	glDisable(GL_BLEND);
+	glDisable(GL_LINE_SMOOTH);
+	
+	glPopMatrix();
+}
+
+/* Turn brush cursor in 3D view on/off */
+static void screencast_cursor_toggle(wmWindowManager *wm, short enable)
+{
+	static void *cursor = NULL;
+	
+	if (cursor && !enable) {
+		/* clear cursor */
+		WM_paint_cursor_end(wm, cursor);
+		cursor = NULL;
+	}
+	else if (enable) {
+		/* enable cursor */
+		cursor = WM_paint_cursor_activate(wm, NULL, screencast_draw_cursor, NULL);
+	}
+}
+
+static void screenshot_endjob(void *sjv)
+{
+	ScreenshotJob *sj = sjv;
+	
+	screencast_cursor_toggle(sj->wm, 0);
+}
+
+
 static int screencast_exec(bContext *C, wmOperator *op)
 {
 	bScreen *screen = CTX_wm_screen(C);
@@ -418,16 +469,19 @@
 	}
 	sj->bmain = CTX_data_main(C);
 	sj->scene = CTX_data_scene(C);
-
+	sj->wm = CTX_wm_manager(C);
+	
 	BKE_reports_init(&sj->reports, RPT_PRINT);
 
 	/* setup job */
 	WM_jobs_customdata_set(wm_job, sj, screenshot_freejob);
 	WM_jobs_timer(wm_job, 0.1, 0, NC_SCREEN | ND_SCREENCAST);
-	WM_jobs_callbacks(wm_job, screenshot_startjob, NULL, screenshot_updatejob, NULL);
+	WM_jobs_callbacks(wm_job, screenshot_startjob, NULL, screenshot_updatejob, screenshot_endjob);
 	
-	WM_jobs_start(CTX_wm_manager(C), wm_job);
+	WM_jobs_start(sj->wm, wm_job);
 	
+	screencast_cursor_toggle(sj->wm, 1);
+	
 	WM_event_add_notifier(C, NC_SCREEN | ND_SCREENCAST, screen);
 	
 	return OPERATOR_FINISHED;

Modified: trunk/blender/source/blender/editors/space_view3d/space_view3d.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/space_view3d.c	2012-11-11 18:28:45 UTC (rev 52110)
+++ trunk/blender/source/blender/editors/space_view3d/space_view3d.c	2012-11-11 18:33:35 UTC (rev 52111)
@@ -945,7 +945,7 @@
 				ED_region_tag_redraw(ar);
 			break;
 		case NC_GPENCIL:
-			if (wmn->data == ND_DATA)
+ 			if (wmn->data == ND_DATA || wmn->action == NA_EDITED)
 				ED_region_tag_redraw(ar);
 			break;
 	}

Modified: trunk/blender/source/blender/windowmanager/intern/wm_window.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_window.c	2012-11-11 18:28:45 UTC (rev 52110)
+++ trunk/blender/source/blender/windowmanager/intern/wm_window.c	2012-11-11 18:33:35 UTC (rev 52111)
@@ -754,6 +754,11 @@
 				state = GHOST_GetWindowState(win->ghostwin);
 				win->windowstate = state;
 
+				/* stop screencast if resize */
+				if (type == GHOST_kEventWindowSize) {
+					WM_jobs_stop(CTX_wm_manager(C), win->screen, NULL);
+				}
+				
 				/* win32: gives undefined window size when minimized */
 				if (state != GHOST_kWindowStateMinimized) {
 					GHOST_RectangleHandle client_rect;




More information about the Bf-blender-cvs mailing list