[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-ati: Changes to 'ubuntu'



 debian/changelog                                |    8 +++++
 debian/patches/101_ref-count-dri2-buffers.patch |   38 ++++++++++++------------
 2 files changed, 27 insertions(+), 19 deletions(-)

New commits:
commit 8df3d21d60fb263c99126d332654f0e607f341a8
Author: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
Date:   Thu Aug 26 15:44:45 2010 +1000

    Finilise changelog

diff --git a/debian/changelog b/debian/changelog
index 8d5bd68..b9fad69 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xserver-xorg-video-ati (1:6.13.1-1ubuntu4) UNRELEASED; urgency=low
+xserver-xorg-video-ati (1:6.13.1-1ubuntu4) maverick; urgency=low
 
   * debian/patches/101_ref-count-dri2-buffers.patch:
     + Fix Xserver crash when scheduling a swap on an offscreen Drawable,

commit 75a621e46c21a016885afba15cff4a70572afeaa
Author: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
Date:   Thu Aug 26 15:42:26 2010 +1000

    Fix ref-count-dri2-buffers patch to not kill the server when swapping buffers of offscreen Drawables

diff --git a/debian/changelog b/debian/changelog
index 04358cd..8d5bd68 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+xserver-xorg-video-ati (1:6.13.1-1ubuntu4) UNRELEASED; urgency=low
+
+  * debian/patches/101_ref-count-dri2-buffers.patch:
+    + Fix Xserver crash when scheduling a swap on an offscreen Drawable,
+      most easily triggered by some Wine apps
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Thu, 26 Aug 2010 13:03:36 +1000
+
 xserver-xorg-video-ati (1:6.13.1-1ubuntu3) maverick; urgency=low
 
   * debian/rules:
diff --git a/debian/patches/101_ref-count-dri2-buffers.patch b/debian/patches/101_ref-count-dri2-buffers.patch
index b7f8e92..8701aa8 100644
--- a/debian/patches/101_ref-count-dri2-buffers.patch
+++ b/debian/patches/101_ref-count-dri2-buffers.patch
@@ -17,11 +17,11 @@ Date:   Tue Aug 17 12:13:09 2010 +1000
     Fixes: http://bugs.freedesktop.org/show_bug.cgi?id=29065
     Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
 
-diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
-index 6356711..00b5712 100644
---- a/src/radeon_dri2.c
-+++ b/src/radeon_dri2.c
-@@ -55,6 +55,7 @@ typedef DRI2Buffer2Ptr BufferPtr;
+Index: xserver-xorg-video-ati/src/radeon_dri2.c
+===================================================================
+--- xserver-xorg-video-ati.orig/src/radeon_dri2.c	2010-08-26 12:58:57.886218003 +1000
++++ xserver-xorg-video-ati/src/radeon_dri2.c	2010-08-26 12:59:46.000000000 +1000
+@@ -55,6 +55,7 @@
  struct dri2_buffer_priv {
      PixmapPtr   pixmap;
      unsigned int attachment;
@@ -29,7 +29,7 @@ index 6356711..00b5712 100644
  };
  
  
-@@ -236,6 +237,7 @@ radeon_dri2_create_buffer(DrawablePtr drawable,
+@@ -220,6 +221,7 @@
      buffers->flags = 0; /* not tiled */
      privates->pixmap = pixmap;
      privates->attachment = attachment;
@@ -37,7 +37,7 @@ index 6356711..00b5712 100644
  
      return buffers;
  }
-@@ -267,13 +269,26 @@ radeon_dri2_destroy_buffer(DrawablePtr drawable, BufferPtr buffers)
+@@ -251,13 +253,26 @@
      if(buffers)
      {
          ScreenPtr pScreen = drawable->pScreen;
@@ -52,7 +52,7 @@ index 6356711..00b5712 100644
  
 -        free(buffers->driverPrivate);
 -        free(buffers);
-+            xf86DrvMsg(scrn->scrnIndex, X_WARNING, 
++            xf86DrvMsg(scrn->scrnIndex, X_WARNING,
 +                       "Attempted to destroy previously destroyed buffer.\
 + This is a programming error\n");
 +            return;
@@ -69,7 +69,7 @@ index 6356711..00b5712 100644
      }
  }
  #endif
-@@ -364,6 +379,20 @@ typedef struct _DRI2FrameEvent {
+@@ -348,6 +363,20 @@
      DRI2BufferPtr back;
  } DRI2FrameEventRec, *DRI2FrameEventPtr;
  
@@ -90,7 +90,7 @@ index 6356711..00b5712 100644
  void radeon_dri2_frame_event_handler(unsigned int frame, unsigned int tv_sec,
                                       unsigned int tv_usec, void *event_data)
  {
-@@ -379,6 +408,8 @@ void radeon_dri2_frame_event_handler(unsigned int frame, unsigned int tv_sec,
+@@ -363,6 +392,8 @@
      status = dixLookupDrawable(&drawable, event->drawable_id, serverClient,
                                 M_ANY, DixWriteAccess);
      if (status != Success) {
@@ -99,7 +99,7 @@ index 6356711..00b5712 100644
          free(event);
          return;
      }
-@@ -410,6 +441,8 @@ void radeon_dri2_frame_event_handler(unsigned int frame, unsigned int tv_sec,
+@@ -394,6 +425,8 @@
          break;
      }
  
@@ -108,21 +108,21 @@ index 6356711..00b5712 100644
      free(event);
  }
  
-@@ -645,6 +678,13 @@ static int radeon_dri2_schedule_swap(ClientPtr client, DrawablePtr draw,
-     swap_info->front = front;
-     swap_info->back = back;
+@@ -618,6 +651,13 @@
+ 
+     swap_info = calloc(1, sizeof(DRI2FrameEventRec));
  
 +    /* radeon_dri2_frame_event_handler will get called some unknown time in the
 +     * future with these buffers.  Take a reference to ensure that they won't
-+     * get destroyed before then. 
++     * get destroyed before then.
 +     */
 +    radeon_dri2_ref_buffer(front);
 +    radeon_dri2_ref_buffer(back);
 +
-     /* Get current count */
-     vbl.request.type = DRM_VBLANK_RELATIVE;
-     if (crtc > 0)
-@@ -768,6 +808,10 @@ blit_fallback:
+     /* Drawable not displayed... just complete the swap */
+     if (crtc == -1 || !swap_info)
+         goto blit_fallback;
+@@ -752,6 +792,10 @@
      DRI2SwapComplete(client, draw, 0, 0, 0, DRI2_BLIT_COMPLETE, func, data);
      if (swap_info)
          free(swap_info);


Reply to: