}
}
+static void check_pointer_not_disturbed(void) {
+ Window got_root, got_child;
+ int got_root_x, got_root_y;
+ int got_win_x, got_win_y;
+ unsigned got_mask;
+
+ int r= XQueryPointer(disp,id, &got_root,&got_child,
+ &got_root_x, &got_root_y,
+ &got_win_x, &got_win_y,
+ &got_mask);
+ if (!r ||
+ got_win_x!=commod_page_point.x ||
+ got_win_y!=commod_page_point.y) {
+ progress("");
+ fprintf(stderr,"\nunexpected mouse position:"
+ " samescreen=%d got=%dx%d want=%dx%d",
+ r, got_win_x,got_win_y,
+ commod_page_point.x,commod_page_point.y);
+ fatal("Mouse pointer moved.");
+ }
+}
+
static void send_key(KeySym sym) {
check_not_disturbed();
XTestFakeKeyEvent(disp, keycode(sym),1, 0);
}
static void pgdown_by_mouse(void) {
check_not_disturbed();
+ check_pointer_not_disturbed();
debugf("PAGING Mouse\n");
send_mouse_1_updown_here();
sync_after_input();
" last_input=%f previously=%p `%s'\n",
last_input, previously, doing);
- double max_interval= 5.000;
+ double max_interval= 1.000;
double min_interval= 0.100;
for (;;) {
progress_spinner("%s",doing);
for (;;) {
debugf("page %d paging\n",npages);
+ pgdown_by_mouse();
+
if (!(npages < MAX_PAGES))
fatal("Paging down seems to generate too many pages - max is %d.",
MAX_PAGES);
convert_store_page(current);
free_snapshot(&last); last=current; current=0;
-
debugf("PAGING page %d converted\n",npages);
+ npages++;
wait_for_stability(¤t,last, 0,
"page %d collecting ...",
- npages+1);
-
- if (npages && /* first pagedown doesn't do much */
- identical(current,last)) {
- npages++;
+ npages);
+ if (identical(current,last)) {
free_snapshot(¤t);
break;
}
-
- pgdown_by_mouse();
- npages++;
}
progress("finishing with the YPP client...");
send_mouse_1_updown(commod_focuslast_point.x, commod_focuslast_point.y);
debugf("PAGING all done.\n");
progress_log("collected %d screenshots.",npages);
+ check_pager_motion(0,npages);
}
void take_one_screenshot(void) {