xf86-video-intel: 3 commits - src/sna/kgem.c src/sna/sna_display.c src/sna/sna_dri.c src/sna/sna_driver.c src/sna/sna_render.c
Chris Wilson
ickle at kemper.freedesktop.org
Thu Aug 25 06:51:00 PDT 2011
src/sna/kgem.c | 2 --
src/sna/sna_display.c | 5 +++++
src/sna/sna_dri.c | 19 +++++++++++++++++--
src/sna/sna_driver.c | 10 +++++-----
src/sna/sna_render.c | 2 ++
5 files changed, 29 insertions(+), 9 deletions(-)
New commits:
commit bd98001a49be061f0f2cb008b515f5505c8a63a4
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Thu Aug 25 14:49:30 2011 +0100
sna: Clear structures across server reset
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index afd2a09..061ca74 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -310,9 +310,7 @@ void kgem_init(struct kgem *kgem, int fd, struct pci_device *dev, int gen)
struct drm_i915_gem_get_aperture aperture;
int i;
- /* We presume we are partt of a zeroed structure
memset(kgem, 0, sizeof(*kgem));
- */
kgem->fd = fd;
kgem->gen = gen;
diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index 6274a3f..107659b 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -745,11 +745,7 @@ static Bool sna_close_screen(int scrnIndex, ScreenPtr screen)
xf86_cursors_fini(screen);
/* XXX unhook devPrivate otherwise fbCloseScreen frees it! */
- if (sna->front) {
- screen->DestroyPixmap(sna->front);
- sna->front = NULL;
- screen->devPrivate = NULL;
- }
+ screen->devPrivate = NULL;
screen->CloseScreen = sna->CloseScreen;
(*screen->CloseScreen) (scrnIndex, screen);
@@ -760,6 +756,10 @@ static Bool sna_close_screen(int scrnIndex, ScreenPtr screen)
}
sna_mode_remove_fb(sna);
+ if (sna->front) {
+ screen->DestroyPixmap(sna->front);
+ sna->front = NULL;
+ }
xf86GARTCloseScreen(scrnIndex);
scrn->vtSema = FALSE;
diff --git a/src/sna/sna_render.c b/src/sna/sna_render.c
index 41e7694..4a38f39 100644
--- a/src/sna/sna_render.c
+++ b/src/sna/sna_render.c
@@ -200,6 +200,8 @@ void no_render_init(struct sna *sna)
{
struct sna_render *render = &sna->render;
+ memset (render,0, sizeof (*render));
+
render->composite = no_render_composite;
render->copy_boxes = no_render_copy_boxes;
commit 0865acb3ad03239ffdf8cbf3c9fc204b6c97121b
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Thu Aug 25 12:47:27 2011 +0100
sna/dri2: Add some debug around the use of the Resource database
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c
index 9b0ce20..0a01f8a 100644
--- a/src/sna/sna_dri.c
+++ b/src/sna/sna_dri.c
@@ -567,6 +567,9 @@ get_resource(XID id, RESTYPE type)
return NULL;
}
+ DBG(("%s(%ld): new(%ld)=%p\n", __FUNCTION__,
+ (long)id, (long)type, resource));
+
list_init(resource);
return resource;
}
@@ -576,7 +579,7 @@ sna_dri_frame_event_client_gone(void *data, XID id)
{
struct list *resource = data;
- DBG(("%s(%ld)\n", __FUNCTION__, (long)id));
+ DBG(("%s(%ld): %p\n", __FUNCTION__, (long)id, data));
while (!list_is_empty(resource)) {
struct sna_dri_frame_event *info =
@@ -584,6 +587,9 @@ sna_dri_frame_event_client_gone(void *data, XID id)
struct sna_dri_frame_event,
client_resource);
+ DBG(("%s: marking client gone [%p]: %p\n",
+ __FUNCTION__, info, info->client));
+
list_del(&info->client_resource);
info->client = NULL;
}
@@ -597,7 +603,7 @@ sna_dri_frame_event_drawable_gone(void *data, XID id)
{
struct list *resource = data;
- DBG(("%s(%ld)\n", __FUNCTION__, (long)id));
+ DBG(("%s(%ld): resource=%p\n", __FUNCTION__, (long)id, resource));
while (!list_is_empty(resource)) {
struct sna_dri_frame_event *info =
@@ -605,6 +611,9 @@ sna_dri_frame_event_drawable_gone(void *data, XID id)
struct sna_dri_frame_event,
drawable_resource);
+ DBG(("%s: marking drawable gone [%p]: %ld\n",
+ __FUNCTION__, info, info->drawable_id));
+
list_del(&info->drawable_resource);
info->drawable_id = None;
}
@@ -668,12 +677,18 @@ sna_dri_add_frame_event(struct sna_dri_frame_event *info)
list_add(&info->drawable_resource, resource);
+ DBG(("%s: add[%p] (%p, %ld)\n", __FUNCTION__,
+ info, info->client, info->drawable_id));
+
return TRUE;
}
static void
sna_dri_frame_event_info_free(struct sna_dri_frame_event *info)
{
+ DBG(("%s: del[%p] (%p, %ld)\n", __FUNCTION__,
+ info, info->client, info->drawable_id));
+
list_del(&info->client_resource);
list_del(&info->drawable_resource);
commit 98b67457caea583de50bff1b11a3c5a2bd694e26
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Thu Aug 25 12:45:43 2011 +0100
sna/display: Destroy shadow data
Under certain circumstances the shadow can be destroy after being
allocated but before being created. The pixmap is a NULL pointer at that
time, but we know that its value should be data, so just use the data
pointer instead.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 0809eba..5aee104 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -764,6 +764,11 @@ sna_crtc_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr pixmap, void *data)
struct sna *sna = to_sna(crtc->scrn);
struct sna_crtc *sna_crtc = crtc->driver_private;
+ /* We may have not called shadow_create() on the data yet and
+ * be cleaning up a NULL shadow_pixmap.
+ */
+ pixmap = data;
+
DBG(("%s(fb=%d, handle=%d)\n", __FUNCTION__,
sna_crtc->shadow_fb_id, sna_pixmap_get_bo(pixmap)->handle));
More information about the xorg-commit
mailing list