DRI3: fixed returning wrong msc (zero) after page flip 20/30320/1
authorRoman Marchenko <r.marchenko@samsung.com>
Fri, 31 Oct 2014 13:29:22 +0000 (15:29 +0200)
committerRoman Marchenko <r.marchenko@samsung.com>
Fri, 14 Nov 2014 13:05:42 +0000 (15:05 +0200)
Change-Id: I8b8b756719aec4e541ac56520c82d69ffefb79dd
Signed-off-by: Roman Marchenko <r.marchenko@samsung.com>
src/accel/sec_present.c

index 59a075b..1af955c 100644 (file)
@@ -50,6 +50,7 @@
 #include "sec_display.h"
 #include "sec_crtc.h"
 
+static int SECPresentGetUstMsc(RRCrtcPtr pRRcrtc, CARD64 *ust, CARD64 *msc);
 
 /*-------------------------- Private structures -----------------------------*/
 typedef struct _presentVblankEvent {
@@ -75,7 +76,7 @@ secPresentVblankHandler(unsigned int frame, unsigned int tv_sec,
 
        PresentVblankEventRec *pEvent = event_data;
 
-       XDBG_DEBUG(MDRI3, "event_id %lld\n", pEvent->event_id);
+    XDBG_DEBUG(MDRI3, "event_id %lld ust:%lld msc:%lld\n", pEvent->event_id, usec, frame);
        present_event_notify(pEvent->event_id, usec, frame);
     free(pEvent);
 }
@@ -103,7 +104,12 @@ secPresentFlipEventHandler(unsigned int frame, unsigned int tv_sec,
        PresentVblankEventRec *pEvent = event_data;
        uint64_t ust = (uint64_t) tv_sec * 1000000 + tv_usec;
        uint64_t msc = (uint64_t)frame;
-       XDBG_DEBUG(MDRI3, "event_id %lld\n", pEvent->event_id);
+    if ( msc == 0 )
+    {
+        uint64_t tmp_ust;
+        SECPresentGetUstMsc(pEvent->pRRcrtc, &tmp_ust, &msc);
+    }
+       XDBG_DEBUG(MDRI3, "event_id %lld ust:%lld msc:%lld(%d)\n", pEvent->event_id, ust, msc, frame);
        present_event_notify(pEvent->event_id, ust, msc);
        free(pEvent);
 }
@@ -252,7 +258,7 @@ SECPresentFlip(RRCrtcPtr            pRRcrtc,
 
        Bool ret;
 
-       /* TODO - precoess sync_flip flag
+       /* TODO - process sync_flip flag
      * if (sync_flip)
      *      -//-
      * else