chiark
/
gitweb
/
~yarrgweb
/
ypp-sc-tools.web-live.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
show time taken by XGetImage, too
[ypp-sc-tools.web-live.git]
/
pctb
/
pages.c
diff --git
a/pctb/pages.c
b/pctb/pages.c
index 50a652c5946a02ffd1a82fc60780e19620217dbf..0a175ee56054b461121e3ee5ef5bc52aa6744a02 100644
(file)
--- a/
pctb/pages.c
+++ b/
pctb/pages.c
@@
-45,7
+45,7
@@
CanonImage *page_images[MAX_PAGES];
int npages;
RgbImage *page0_rgbimage;
int npages;
RgbImage *page0_rgbimage;
-char *ocean, *pirate;
+c
onst c
har *ocean, *pirate;
static XWindowAttributes attr;
static Window id;
static XWindowAttributes attr;
static Window id;
@@
-243,6
+243,7
@@
static void snapshot(Snapshot **output) {
double begin= timestamp();
if (shmim) {
double begin= timestamp();
if (shmim) {
+ rtimestamp(&begin, "XShmGetImage before");
xassert( XShmGetImage(disp,id,shmim, 0,0, AllPlanes) );
rtimestamp(&begin, "XShmGetImage");
xassert( XShmGetImage(disp,id,shmim, 0,0, AllPlanes) );
rtimestamp(&begin, "XShmGetImage");
@@
-253,6
+254,7
@@
static void snapshot(Snapshot **output) {
memcpy(im_free->data, shmim->data, dsz);
rtimestamp(&begin, "mmalloc/memcpy");
} else {
memcpy(im_free->data, shmim->data, dsz);
rtimestamp(&begin, "mmalloc/memcpy");
} else {
+ rtimestamp(&begin, "XGetImage before");
xassert( im_use= im_free=
XGetImage(disp,id, 0,0, wwidth,wheight, AllPlanes, ZPixmap) );
rtimestamp(&begin, "XGetImage");
xassert( im_use= im_free=
XGetImage(disp,id, 0,0, wwidth,wheight, AllPlanes, ZPixmap) );
rtimestamp(&begin, "XGetImage");
@@
-322,15
+324,14
@@
static void wait_for_stability(Snapshot **output,
/* waits longer if we're going to return an image identical to previously
* if previously==0, all images are considered identical to it */
/* waits longer if we're going to return an image identical to previously
* if previously==0, all images are considered identical to it */
- debugf("PAGING wait_for_stability"
- " last_input=%f previously=%p\n",
- last_input, previously);
-
char *doing;
char *doing;
- sysassert( vasprintf(&doing,fmt,al) >=0);
-
+ sysassert( vasprintf(&doing,fmt,al) >=0 );
progress("%s",doing);
progress("%s",doing);
+ debugf("PAGING wait_for_stability"
+ " last_input=%f previously=%p `%s'\n",
+ last_input, previously, doing);
+
for (;;) {
double at_snapshot= timestamp();
double need_sleep= min_update_allowance - (at_snapshot - last_input);
for (;;) {
double at_snapshot= timestamp();
double need_sleep= min_update_allowance - (at_snapshot - last_input);
@@
-403,7
+404,7
@@
static void raise_and_get_details(void) {
check_client_window_all_on_screen();
int shm= XShmQueryExtension(disp);
check_client_window_all_on_screen();
int shm= XShmQueryExtension(disp);
-
shm=0
;
+
debugf("PAGING shm=%d\n",shm)
;
if (shm) {
xassert( shmim= XShmCreateImage(disp, attr.visual, attr.depth, ZPixmap,
0,&shminfo, wwidth,wheight) );
if (shm) {
xassert( shmim= XShmCreateImage(disp, attr.visual, attr.depth, ZPixmap,
0,&shminfo, wwidth,wheight) );
@@
-514,28
+515,18
@@
static void prepare_ypp_client(void) {
raise_and_get_details();
wait_for_stability(¤t,0,0, "checking current YPP client screen...");
raise_and_get_details();
wait_for_stability(¤t,0,0, "checking current YPP client screen...");
-#if 1
-timestamp();
-snapshot(¤t);
-snapshot(¤t);
-snapshot(¤t);
-snapshot(¤t);
-snapshot(¤t);
-snapshot(¤t);
-snapshot(¤t);
-snapshot(¤t);
-snapshot(¤t);
-snapshot(¤t);
-timestamp();
-#endif
-
test= convert_page(current, 0);
find_structure(test, &max_relevant_y);
check_correct_commodities();
test= convert_page(current, 0);
find_structure(test, &max_relevant_y);
check_correct_commodities();
+ Rect sunshine= find_sunshine_widget();
+
+ progress("poking client...");
+ mouse_1_updown((sunshine.tl.x + sunshine.br.x) / 2,
+ (sunshine.tl.y*9 + sunshine.br.y) / 10);
+
free(test);
free(test);
- free_snapshot(¤t);
-
progress("requesting status informatio
n...");
+
wait_for_stability(¤t,0,0, "checking basic YPP client scree
n...");
mouse_1_updown(250, wheight-10);
mouse_1_updown_here();
mouse_1_updown_here();
mouse_1_updown(250, wheight-10);
mouse_1_updown_here();
mouse_1_updown_here();
@@
-545,6
+536,11
@@
timestamp();
send_key(XK_w);
send_key(XK_Return);
sync_after_input();
send_key(XK_w);
send_key(XK_Return);
sync_after_input();
+
+ Snapshot *status=0;
+ wait_for_stability(&status,current,0, "awaiting status information...");
+ free_snapshot(¤t);
+ free_snapshot(&status);
}
void take_screenshots(void) {
}
void take_screenshots(void) {
@@
-596,7
+592,7
@@
void take_one_screenshot(void) {
prepare_ypp_client();
wait_for_stability(¤t,0,0, "taking screenshot...");
page0_rgbimage= alloc_rgb_image(current->w, current->h);
prepare_ypp_client();
wait_for_stability(¤t,0,0, "taking screenshot...");
page0_rgbimage= alloc_rgb_image(current->w, current->h);
- page_images[0]= convert_page(current,
0
);
+ page_images[0]= convert_page(current,
page0_rgbimage
);
npages= 1;
progress_log("collected single screenshot.");
}
npages= 1;
progress_log("collected single screenshot.");
}
@@
-694,11
+690,13
@@
void find_yppclient_window(void) {
REQUIRE( !memcmp(title + len - S(suffix), suffix, S(suffix)) );
REQUIRE( !memcmp(spc1, onthe, S(onthe)) );
REQUIRE( !memcmp(title + len - S(suffix), suffix, S(suffix)) );
REQUIRE( !memcmp(spc1, onthe, S(onthe)) );
-#define ASSIGN(what, start, end) do { \
- sysassert( asprintf(&what, "%.*s", (end)-(start), start) >0 ); \
- }while(0)
- ASSIGN(pirate, title + S(prefix), spc1);
+#define ASSIGN(what, start, end) \
+ what= masprintf("%.*s", (end)-(start), start); \
+ if (o_##what) REQUIRE( !strcasecmp(o_##what, what) ); \
+ else
+
ASSIGN(ocean, spc1 + S(onthe), (title + len) - S(suffix));
ASSIGN(ocean, spc1 + S(onthe), (title + len) - S(suffix));
+ ASSIGN(pirate, title + S(prefix), spc1);
debugfind(" YES!\n");
id= w2;
debugfind(" YES!\n");
id= w2;
@@
-712,9
+710,11
@@
void find_yppclient_window(void) {
if (children1) XFree(children1);
}
if (nfound>1)
if (children1) XFree(children1);
}
if (nfound>1)
- fatal("Found several YPP clients."
- " Close one, or specify the windowid with --window-id.\n");
+ fatal("Found several possible YPP clients. Close one,\n"
+ " disambiguate with --pirate or --ocean,"
+ " or specify --window-id.\n");
if (nfound<1)
if (nfound<1)
- fatal("Did not find YPP client."
- " Use --window-id and/or report this as a fault.\n");
+ fatal("Did not find %sYPP client."
+ " Use --window-id and/or report this as a fault.\n",
+ o_ocean || o_pirate ? "matching ": "");
}
}