diff mbox

xf86-video-intel: 3 commits - src/intel_display.c src/intel_dri.c src/intel.h

Message ID yun39mctmov.fsf@aiko.keithp.com (mailing list archive)
State New, archived
Headers show

Commit Message

Keith Packard March 24, 2011, 6:09 p.m. UTC
None
diff mbox

Patch

diff --git a/src/intel_dri.c b/src/intel_dri.c
index 3b80823..f7a4fc4 100644
--- a/src/intel_dri.c
+++ b/src/intel_dri.c
@@ -625,8 +625,10 @@  i830_dri2_add_frame_event(DRI2FrameEventPtr frame_event)
 	if (!AddResource(frame_event->client_id, frame_event_client_type, frame_event))
 		return FALSE;
 
-	if (!AddResource(frame_event->drawable_id, frame_event_drawable_type, frame_event))
+	if (!AddResource(frame_event->drawable_id, frame_event_drawable_type, frame_event)) {
+		FreeResourceByType(frame_event->client_id, frame_event_client_type, TRUE);
 		return FALSE;
+	}
 
 	return TRUE;
 }
@@ -705,7 +707,10 @@  I830DRI2ScheduleFlip(struct intel_screen_private *intel,
 	flip_info->event_data = data;
 	flip_info->frame = target_msc;
 
-	i830_dri2_add_frame_event(flip_info);
+	if (!i830_dri2_add_frame_event(flip_info)) {
+	    free(flip_info);
+	    return FALSE;
+	}
 
 	/* Page flip the full screen buffer */
 	back_priv = back->driverPrivate;
@@ -958,7 +963,10 @@  I830DRI2ScheduleSwap(ClientPtr client, DrawablePtr draw, DRI2BufferPtr front,
 	I830DRI2ReferenceBuffer(front);
 	I830DRI2ReferenceBuffer(back);
 
-	i830_dri2_add_frame_event(swap_info);
+	if (!i830_dri2_add_frame_event(swap_info)) {
+	    free(swap_info);
+	    goto blit_fallback;
+	}
 
 	/* Get current count */
 	vbl.request.type = DRM_VBLANK_RELATIVE;