Only set pointer image when it changes

dev
Kristian Høgsberg 14 years ago
parent acf82a36bb
commit 7d804068b6
  1. 15
      clients/window.c

@ -109,11 +109,17 @@ struct input {
struct wl_input_device *input_device;
struct window *pointer_focus;
struct window *keyboard_focus;
uint32_t current_pointer_image;
uint32_t modifiers;
int32_t x, y, sx, sy;
struct wl_list link;
};
enum {
POINTER_DEFAULT = 100,
POINTER_UNSET
};
const char *option_xkb_layout = "us";
const char *option_xkb_variant = "";
const char *option_xkb_options = "";
@ -555,12 +561,20 @@ set_pointer_image(struct input *input, int pointer)
break;
case WINDOW_EXTERIOR:
case WINDOW_TITLEBAR:
if (input->current_pointer_image == POINTER_DEFAULT)
return;
wl_input_device_attach(input->input_device, NULL, 0, 0);
input->current_pointer_image = POINTER_DEFAULT;
return;
default:
break;
}
if (pointer == input->current_pointer_image)
return;
input->current_pointer_image = pointer;
surface = display->pointer_surfaces[pointer];
buffer = display_get_buffer_for_surface(display, surface);
wl_input_device_attach(input->input_device, buffer,
@ -692,6 +706,7 @@ window_handle_pointer_focus(void *data,
set_pointer_image(input, pointer);
} else {
input->pointer_focus = NULL;
input->current_pointer_image = POINTER_UNSET;
}
}

Loading…
Cancel
Save