2008-03-30 Neil Roberts <neil@o-hand.com>

* clutter/win32/clutter-win32.h: 
	* clutter/win32/clutter-stage-win32.h: 
	* clutter/win32/clutter-stage-win32.c: 
	* clutter/win32/clutter-event-win32.c: 
	* clutter/win32/clutter-backend-win32.h: 
	* clutter/win32/clutter-backend-win32.c:
	Upgraded for multi-stage support.

	* clutter/win32/clutter-stage-win32.c
	(clutter_stage_win32_request_coords): Fixed so that it doesn't set
	the position or size if it hasn't changed. This was causing
	problems when the window was resized using the top left corner. In
	that case the window receives resize and move messages separately
	which caused the window to flash at a different size or position
	while one message was handled before the other.
	(clutter_stage_win32_realize): Added PFD_GENERIC_ACCELERATED to
	the list of pixel format flags to force it to use hardware
	acceleration.

2008-03-30  Neil Roberts  <neil@o-hand.com>

	* clutter-sections.txt: Added clutter_win32_get_stage_from_window
This commit is contained in:
Neil Roberts
2008-03-30 16:51:01 +00:00
parent 8847bcd195
commit 1a263dca5c
9 changed files with 148 additions and 90 deletions

View File

@ -307,16 +307,17 @@ message_translate (ClutterBackend *backend,
ClutterStageWin32 *stage_win32;
ClutterStage *stage;
gboolean res;
HWND stage_hwnd;
backend_win32 = CLUTTER_BACKEND_WIN32 (backend);
stage = CLUTTER_STAGE (_clutter_backend_get_stage (backend));
stage_win32 = CLUTTER_STAGE_WIN32 (stage);
stage_hwnd = clutter_win32_get_stage_window (stage);
/* Do further processing only on events for the stage window */
if (stage_hwnd != msg->hwnd)
stage = clutter_win32_get_stage_from_window (msg->hwnd);
if (stage == NULL)
return FALSE;
stage_win32 = CLUTTER_STAGE_WIN32 (stage);
event->any.stage = stage;
res = TRUE;
@ -393,7 +394,8 @@ message_translate (ClutterBackend *backend,
break;
case WM_PAINT:
clutter_actor_queue_redraw (CLUTTER_ACTOR (stage_win32));
CLUTTER_NOTE (MULTISTAGE, "expose for stage:%p, redrawing", stage);
clutter_redraw (stage);
res = FALSE;
break;