Force Voodoo blit
Certain applications using the Voodoo adapter stop blitting when there's no activity (e.g mouse movement, animation). This results in a black screen when events like window/full screen transitions take place. Usually this can be fixed by moving the mouse or with keyboard inout. This change forces a blit to refresh the screen. In addition, added critical sections since they are lighter than mutexes.
This commit is contained in:
@@ -142,6 +142,7 @@ extern void ioctl_close(uint8_t id);
|
||||
typedef void thread_t;
|
||||
typedef void event_t;
|
||||
typedef void mutex_t;
|
||||
typedef void lightmutex_t;
|
||||
|
||||
extern thread_t *thread_create(void (*thread_func)(void *param), void *param);
|
||||
extern void thread_kill(thread_t *arg);
|
||||
@@ -157,6 +158,13 @@ extern void thread_close_mutex(mutex_t *arg);
|
||||
extern int thread_wait_mutex(mutex_t *arg);
|
||||
extern int thread_release_mutex(mutex_t *mutex);
|
||||
|
||||
#define LIGHT_MUTEX_DEFAULT_SPIN_COUNT 1024
|
||||
|
||||
lightmutex_t *thread_create_light_mutex();
|
||||
lightmutex_t *thread_create_light_mutex_and_spin_count(unsigned int spin_count);
|
||||
int thread_wait_light_mutex(lightmutex_t *lightmutex);
|
||||
int thread_release_light_mutex(lightmutex_t *lightmutex);
|
||||
void thread_close_light_mutex(lightmutex_t *lightmutex);
|
||||
|
||||
/* Other stuff. */
|
||||
extern void startblit(void);
|
||||
|
||||
@@ -489,6 +489,10 @@ typedef struct voodoo_t
|
||||
uint64_t time;
|
||||
int render_time[4];
|
||||
|
||||
int force_blit_count;
|
||||
int can_blit;
|
||||
lightmutex_t* force_blit_mutex;
|
||||
|
||||
int use_recompiler;
|
||||
void *codegen_data;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user