The last flip complete signal may happen after the
sna_dri2_destroy_window function has been called. This
leads to calling frame_swap_complete with a null flip
drawable. So check for that and handle accordingly.

Signed-off-by: Lim Siew Hoon <siew.hoon....@intel.com>
Reviewed-by: Bob Paauwe <bob.j.paa...@intel.com>
---
 src/sna/sna_dri2.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c
index 05a4f1c..6f59f05 100644
--- a/src/sna/sna_dri2.c
+++ b/src/sna/sna_dri2.c
@@ -2874,6 +2874,10 @@ static void sna_dri2_flip_event(struct sna_dri2_event 
*flip)
        case FLIP_THROTTLE:
                if (flip->signal) {
                        DBG(("%s: triple buffer swap complete, unblocking 
client\n", __FUNCTION__));
+                       if(flip->draw == NULL) {
+                               sna_dri2_event_free(flip);
+                               break;
+                       }
                        frame_swap_complete(flip, DRI2_FLIP_COMPLETE);
                }
        case FLIP_COMPLETE:
-- 
2.1.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to