From 2790ec444e777fa6d9a039958d98e796a0b50dd8 Mon Sep 17 00:00:00 2001 From: Melissa Goad Date: Thu, 4 May 2017 20:22:04 -0500 Subject: [PATCH] Fixed VBLANK interrupt on nVidia cards --- src/vid_nv_riva128.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/vid_nv_riva128.c b/src/vid_nv_riva128.c index 9f47a6c41..3d6483f77 100644 --- a/src/vid_nv_riva128.c +++ b/src/vid_nv_riva128.c @@ -1994,12 +1994,11 @@ static void riva128_nvclk_poll(void *p) riva128->nvtime += cpuclock / riva128->nvfreq; } -static void riva128_vblank_poll(void *p) +static void riva128_vblank_poll(svga_t *svga) { - riva128_t *riva128 = (riva128_t *)p; - svga_t *svga = &riva128->svga; - - if(svga->vc == svga->dispend) riva128_pmc_interrupt(24, riva128); + riva128_t *riva128 = (riva128_t *)svga->p; + + riva128_pmc_interrupt(24, riva128); } static uint8_t riva128_rma_in(uint16_t addr, void *p) @@ -2793,7 +2792,8 @@ static void *riva128_init() timer_add(riva128_mclk_poll, &riva128->mtime, TIMER_ALWAYS_ENABLED, riva128); timer_add(riva128_nvclk_poll, &riva128->nvtime, TIMER_ALWAYS_ENABLED, riva128); - timer_add(riva128_vblank_poll, &riva128->svga.vidtime, TIMER_ALWAYS_ENABLED, riva128); + + riva128->svga.vblank_start = riva128_vblank_poll; return riva128; } @@ -3078,7 +3078,8 @@ static void *rivatnt_init() timer_add(riva128_mclk_poll, &riva128->mtime, TIMER_ALWAYS_ENABLED, riva128); timer_add(riva128_nvclk_poll, &riva128->nvtime, TIMER_ALWAYS_ENABLED, riva128); - timer_add(riva128_vblank_poll, &riva128->svga.vidtime, TIMER_ALWAYS_ENABLED, riva128); + + riva128->svga.vblank_start = riva128_vblank_poll; return riva128; } @@ -3289,7 +3290,8 @@ static void *rivatnt2_init() timer_add(riva128_mclk_poll, &riva128->mtime, TIMER_ALWAYS_ENABLED, riva128); timer_add(riva128_nvclk_poll, &riva128->nvtime, TIMER_ALWAYS_ENABLED, riva128); - timer_add(riva128_vblank_poll, &riva128->svga.vidtime, TIMER_ALWAYS_ENABLED, riva128); + + riva128->svga.vblank_start = riva128_vblank_poll; return riva128; }