Some window configuration optimisations, simple mouse click and fix for m_filter

This commit is contained in:
eukos 2015-09-18 18:35:07 +02:00
parent 6a718a4a4f
commit 3a43293f4c

View file

@ -70,6 +70,7 @@ static long X11_buffersize;
int vid_surfcachesize;
void *vid_surfcache;
static int vid_center_x, vid_center_y;
void (*vid_menudrawfn) (void);
void (*vid_menukeyfn) (int key);
@ -192,7 +193,7 @@ void VID_Init(unsigned char *palette)
gtk_widget_set_size_request(x_win, 320, 200);
gtk_window_set_position(x_win,GTK_WIN_POS_CENTER_ALWAYS);
g_signal_connect (x_win, "destroy", G_CALLBACK (exit), NULL);
gtk_widget_set_events(x_win, GDK_BUTTON_PRESS_MASK);
gtk_widget_set_events(x_win, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
// FOR LATER!
@ -239,7 +240,12 @@ void VID_Init(unsigned char *palette)
vid.aspect =
((float) vid.height / (float) vid.width) * (320.0 / 240.0);
mouse_enabled = true;
gtk_main_iteration ();
gdk_window_get_geometry (gtk_widget_get_window(x_win), &vid_frame[0], &vid_frame[1], &vid_frame[2], &vid_frame[3], NULL);
gdk_window_get_position(gtk_widget_get_window(x_win), &vid_frame[0], &vid_frame[1]);
vid_center_x = (int)(((float)vid_frame[2] / 2) + vid_frame[0]);
vid_center_y = (int)(((float)vid_frame[2] / 2) + vid_frame[1]);
vid_frame[2] += vid_frame[0];
vid_frame[3] += vid_frame[1];
}
void VID_ShiftPalette(unsigned char *p)
@ -397,14 +403,14 @@ struct {
int keyq_head = 0;
int keyq_tail = 0;
int mouse_buttons=3;
int mouse_oldbuttonstate;
int mouse_buttonstate;
void GetEvent(void)
{
int w, h;
GdkEvent *event;
event = gdk_event_get();
gtk_window_get_size(GTK_WINDOW(x_win), &w, &h);
if (event)
switch (event->type) {
@ -419,34 +425,38 @@ void GetEvent(void)
keyq_head = (keyq_head + 1) & 63;
break;
case GDK_ENTER_NOTIFY:
//XSetInputFocus(GDK_WINDOW_XDISPLAY(gtk_widget_get_window(x_win)),
// GDK_WINDOW_XWINDOW(gtk_widget_get_window(x_win)), RevertToNone,
// CurrentTime);
IN_ActivateMouse();
break;
case GDK_LEAVE_NOTIFY:
//XSetInputFocus(GDK_WINDOW_XDISPLAY(gtk_widget_get_window(x_win)),
// None, RevertToNone, CurrentTime);
IN_DeactivateMouse();
break;
default:
break;
}
if(config_notify_width != w || config_notify_height != h){
config_notify_width = w;
case GDK_CONFIGURE:
gtk_window_get_size(GTK_WINDOW(x_win), &w, &h);
gdk_window_get_geometry (gtk_widget_get_window(x_win), &vid_frame[0], &vid_frame[1], &vid_frame[2], &vid_frame[3], NULL);
gdk_window_get_position(gtk_widget_get_window(x_win), &vid_frame[0], &vid_frame[1]);
vid_center_x = (int)(((float)vid_frame[2] / 2) + vid_frame[0]);
vid_center_y = (int)(((float)vid_frame[2] / 2) + vid_frame[1]);
vid_frame[2] += vid_frame[0];
vid_frame[3] += vid_frame[1];
config_notify_width = w;
config_notify_height = h;
config_notify = 1;
break;
case GDK_BUTTON_PRESS:
Key_Event (K_MOUSE1, true);
printf("MOUSE 1 DOWN\n");
break;
case GDK_BUTTON_RELEASE:
Key_Event (K_MOUSE1, false);
printf("MOUSE 1 UP\n");
break;
break;
}
}
static int vid_center_x, vid_center_y;
// flushes the given rectangles from the view buffer to the screen
void VID_Update(vrect_t * rects)
{
gdk_window_get_geometry (gtk_widget_get_window(x_win), &vid_frame[0], &vid_frame[1], &vid_frame[2], &vid_frame[3], NULL);
gdk_window_get_position(gtk_widget_get_window(x_win), &vid_frame[0], &vid_frame[1]);
vid_center_x = (int)(((float)vid_frame[2] / 2) + vid_frame[0]);
vid_center_y = (int)(((float)vid_frame[2] / 2) + vid_frame[1]);
vid_frame[2] += vid_frame[0];
vid_frame[3] += vid_frame[1];
if (config_notify)
{
@ -515,15 +525,19 @@ void Sys_DisplayWindow(int window)
void Sys_SendKeyEvents(void)
{
if (gdk_initialized) {
while (gdk_events_pending()) {
GetEvent();
while (keyq_head != keyq_tail) {
Key_Event(keyq[keyq_tail].key, keyq[keyq_tail].down);
keyq_tail = (keyq_tail + 1) & 63;
}
if (!gdk_initialized)
return;
while (gdk_events_pending())
{
GetEvent();
while (keyq_head != keyq_tail)
{
Key_Event(keyq[keyq_tail].key, keyq[keyq_tail].down);
keyq_tail = (keyq_tail + 1) & 63;
}
}
}
}
void D_BeginDirectRect(int x, int y, byte * pbitmap, int width, int height)
@ -561,12 +575,12 @@ extern vec3_t deathcam_angles; //eukara - deathcam
void IN_Move (usercmd_t *cmd)
{
vec3_t tangles; // eukara - deathcam
/*
if (m_filter->value) {
mouse_x = (mouse_x + old_mouse_x) * 0.5;
mouse_y = (mouse_y + old_mouse_y) * 0.5;
}
*/
if (mouse_enabled == true)
{
@ -638,7 +652,10 @@ void IN_Move (usercmd_t *cmd)
if((mouse_x || mouse_y) && mouse_enabled)
gdk_display_warp_pointer (display, screen, vid_center_x, vid_center_y);
}
void IN_Commands(){}
void IN_Commands()
{
}
void IN_Init(){}
void IN_Shutdown(){}
@ -676,8 +693,14 @@ void VID_CreateSplash()
gtk_main ();
}
void VID_Init_Cvars(){}
void IN_Init_Cvars(){}
void VID_Init_Cvars()
{
}
void IN_Init_Cvars()
{
m_filter = Cvar_Get ("m_filter", "0", CVAR_ARCHIVE|CVAR_ORIGINAL);
}
/*
===========