History

D'oh

After a decade (plus change) less prudent side finally won internal struggle.

malc committed 6 years ago

Commit bc370591 parent 42ce7f52 files · +86 −55Browse files

Unified · Split

2 files
  1. link.c +49 −35
  2. main.ml +37 −20
link.c+49−35
@@ -1366,7 +1366,12 @@ ML (mbtoutf8 (value s_v)) · 1365 unmodified lines
1366 CAMLreturn (ret_v);1366 CAMLreturn (ret_v);
1367}1367}
1368 1368
1369static void * mainloop (void UNUSED_ATTR *unused)1369enum {
1370 Copen, Ccs, Cfreepage, Cfreetile, Csearch, Cgeometry, Creqlayout,
1371 Cpage, Ctile, Ctrimset, Csettrim, Csliceh, Cinterrupt
1372};
1373
1374static void *mainloop (void UNUSED_ATTR *unused)
1370{1375{
1371 char *p = NULL;1376 char *p = NULL;
1372 int len, ret, oldlen = 0;1377 int len, ret, oldlen = 0;
@@ -1389,9 +1394,8 @@ static void * mainloop (void UNUSED_ATTR *unused) · 16 unmodified lines
1389 readdata (state.csock, p, len);1394 readdata (state.csock, p, len);
1390 p[len] = 0;1395 p[len] = 0;
1391 1396
1392#define CASE(n) else if (!strncmp (#n, p, sizeof (#n) - 1))1397 switch (p[len-1]) {
1393 if (0) ;1398 case Copen: {
1394 CASE (open) {
1395 int off, usedoccss, ok = 0, layouth;1399 int off, usedoccss, ok = 0, layouth;
1396 char *password;1400 char *password;
1397 char *filename;1401 char *filename;
@@ -1399,12 +1403,12 @@ static void * mainloop (void UNUSED_ATTR *unused) · 1 unmodified line
1399 size_t filenamelen;1403 size_t filenamelen;
1400 1404
1401 fz_var (ok);1405 fz_var (ok);
1402 ret = sscanf (p + 5, " %d %d %n", &usedoccss, &layouth, &off);1406 ret = sscanf (p, " %d %d %n", &usedoccss, &layouth, &off);
1403 if (ret != 2) {1407 if (ret != 2) {
1404 errx (1, "malformed open `%.*s' ret=%d", len, p, ret);1408 errx (1, "malformed open `%.*s' ret=%d", len, p, ret);
1405 }1409 }
1406 1410
1407 filename = p + 5 + off;1411 filename = p + off;
1408 filenamelen = strlen (filename);1412 filenamelen = strlen (filename);
1409 password = filename + filenamelen + 1;1413 password = filename + filenamelen + 1;
1410 1414
@@ -1431,11 +1435,12 @@ static void * mainloop (void UNUSED_ATTR *unused) · 20 unmodified lines
1431 }1435 }
1432 unlock ("open");1436 unlock ("open");
1433 state.needoutline = ok;1437 state.needoutline = ok;
1438 break;
1434 }1439 }
1435 CASE (cs) {1440 case Ccs: {
1436 int i, colorspace;1441 int i, colorspace;
1437 1442
1438 ret = sscanf (p + 2, " %d", &colorspace);1443 ret = sscanf (p, " %d", &colorspace);
1439 if (ret != 1) {1444 if (ret != 1) {
1440 errx (1, "malformed cs `%.*s' ret=%d", len, p, ret);1445 errx (1, "malformed cs `%.*s' ret=%d", len, p, ret);
1441 }1446 }
@@ -1446,41 +1451,44 @@ static void * mainloop (void UNUSED_ATTR *unused) · 4 unmodified lines
1446 state.tex.owners[i].slice = NULL;1451 state.tex.owners[i].slice = NULL;
1447 }1452 }
1448 unlock ("cs");1453 unlock ("cs");
1454 break;
1449 }1455 }
1450 CASE (freepage) {1456 case Cfreepage: {
1451 void *ptr;1457 void *ptr;
1452 1458
1453 ret = sscanf (p + 8, " %" SCNxPTR, (uintptr_t *) &ptr);1459 ret = sscanf (p, " %" SCNxPTR, (uintptr_t *) &ptr);
1454 if (ret != 1) {1460 if (ret != 1) {
1455 errx (1, "malformed freepage `%.*s' ret=%d", len, p, ret);1461 errx (1, "malformed freepage `%.*s' ret=%d", len, p, ret);
1456 }1462 }
1457 lock ("freepage");1463 lock ("freepage");
1458 freepage (ptr);1464 freepage (ptr);
1459 unlock ("freepage");1465 unlock ("freepage");
1466 break;
1460 }1467 }
1461 CASE (freetile) {1468 case Cfreetile: {
1462 void *ptr;1469 void *ptr;
1463 1470
1464 ret = sscanf (p + 8, " %" SCNxPTR, (uintptr_t *) &ptr);1471 ret = sscanf (p, " %" SCNxPTR, (uintptr_t *) &ptr);
1465 if (ret != 1) {1472 if (ret != 1) {
1466 errx (1, "malformed freetile `%.*s' ret=%d", len, p, ret);1473 errx (1, "malformed freetile `%.*s' ret=%d", len, p, ret);
1467 }1474 }
1468 lock ("freetile");1475 lock ("freetile");
1469 freetile (ptr);1476 freetile (ptr);
1470 unlock ("freetile");1477 unlock ("freetile");
1478 break;
1471 }1479 }
1472 CASE (search) {1480 case Csearch: {
1473 int icase, pageno, y, len2, forward;1481 int icase, pageno, y, len2, forward;
1474 char *pattern;1482 char *pattern;
1475 regex_t re;1483 regex_t re;
1476 1484
1477 ret = sscanf (p + 6, " %d %d %d %d,%n",1485 ret = sscanf (p, " %d %d %d %d,%n",
1478 &icase, &pageno, &y, &forward, &len2);1486 &icase, &pageno, &y, &forward, &len2);
1479 if (ret != 4) {1487 if (ret != 4) {
1480 errx (1, "malformed search `%s' ret=%d", p, ret);1488 errx (1, "malformed search `%s' ret=%d", p, ret);
1481 }1489 }
1482 1490
1483 pattern = p + 6 + len2;1491 pattern = p + len2;
1484 ret = regcomp (&re, pattern,1492 ret = regcomp (&re, pattern,
1485 REG_EXTENDED | (icase ? REG_ICASE : 0));1493 REG_EXTENDED | (icase ? REG_ICASE : 0));
1486 if (ret) {1494 if (ret) {
@@ -1496,12 +1504,13 @@ static void * mainloop (void UNUSED_ATTR *unused) · 9 unmodified lines
1496 unlock ("search");1504 unlock ("search");
1497 regfree (&re);1505 regfree (&re);
1498 }1506 }
1507 break;
1499 }1508 }
1500 CASE (geometry) {1509 case Cgeometry: {
1501 int w, h, fitmodel;1510 int w, h, fitmodel;
1502 1511
1503 printd ("clear");1512 printd ("clear");
1504 ret = sscanf (p + 8, " %d %d %d", &w, &h, &fitmodel);1513 ret = sscanf (p, " %d %d %d", &w, &h, &fitmodel);
1505 if (ret != 3) {1514 if (ret != 3) {
1506 errx (1, "malformed geometry `%.*s' ret=%d", len, p, ret);1515 errx (1, "malformed geometry `%.*s' ret=%d", len, p, ret);
1507 }1516 }
@@ -1521,16 +1530,16 @@ static void * mainloop (void UNUSED_ATTR *unused) · 13 unmodified lines
1521 state.gen++;1530 state.gen++;
1522 unlock ("geometry");1531 unlock ("geometry");
1523 printd ("continue %d", state.pagecount);1532 printd ("continue %d", state.pagecount);
1533 break;
1524 }1534 }
1525 CASE (reqlayout) {1535 case Creqlayout: {
1526 char *nameddest;1536 char *nameddest;
1527 int rotate, off, h;1537 int rotate, off, h;
1528 int fitmodel;1538 int fitmodel;
1529 pdf_document *pdf;1539 pdf_document *pdf;
1530 1540
1531 printd ("clear");1541 printd ("clear");
1532 ret = sscanf (p + 9, " %d %d %d %n",1542 ret = sscanf (p, " %d %d %d %n", &rotate, &fitmodel, &h, &off);
1533 &rotate, &fitmodel, &h, &off);
1534 if (ret != 3) {1543 if (ret != 3) {
1535 errx (1, "bad reqlayout line `%.*s' ret=%d", len, p, ret);1544 errx (1, "bad reqlayout line `%.*s' ret=%d", len, p, ret);
1536 }1545 }
@@ -1545,7 +1554,7 @@ static void * mainloop (void UNUSED_ATTR *unused) · 8 unmodified lines
1545 layout ();1554 layout ();
1546 process_outline ();1555 process_outline ();
1547 1556
1548 nameddest = p + 9 + off;1557 nameddest = p + off;
1549 if (pdf && nameddest && *nameddest) {1558 if (pdf && nameddest && *nameddest) {
1550 fz_point xy;1559 fz_point xy;
1551 struct pagedim *pdim;1560 struct pagedim *pdim;
@@ -1559,13 +1568,14 @@ static void * mainloop (void UNUSED_ATTR *unused) · 7 unmodified lines
1559 state.gen++;1568 state.gen++;
1560 unlock ("reqlayout");1569 unlock ("reqlayout");
1561 printd ("continue %d", state.pagecount);1570 printd ("continue %d", state.pagecount);
1571 break;
1562 }1572 }
1563 CASE (page) {1573 case Cpage: {
1564 double a, b;1574 double a, b;
1565 struct page *page;1575 struct page *page;
1566 int pageno, pindex;1576 int pageno, pindex;
1567 1577
1568 ret = sscanf (p + 4, " %d %d", &pageno, &pindex);1578 ret = sscanf (p, " %d %d", &pageno, &pindex);
1569 if (ret != 2) {1579 if (ret != 2) {
1570 errx (1, "bad page line `%.*s' ret=%d", len, p, ret);1580 errx (1, "bad page line `%.*s' ret=%d", len, p, ret);
1571 }1581 }
@@ -1577,15 +1587,16 @@ static void * mainloop (void UNUSED_ATTR *unused) · 5 unmodified lines
1577 unlock ("page");1587 unlock ("page");
1578 1588
1579 printd ("page %" PRIxPTR " %f", (uintptr_t) page, b - a);1589 printd ("page %" PRIxPTR " %f", (uintptr_t) page, b - a);
1590 break;
1580 }1591 }
1581 CASE (tile) {1592 case Ctile: {
1582 int x, y, w, h;1593 int x, y, w, h;
1583 struct page *page;1594 struct page *page;
1584 struct tile *tile;1595 struct tile *tile;
1585 double a, b;1596 double a, b;
1586 void *data;1597 void *data;
1587 1598
1588 ret = sscanf (p + 4, " %" SCNxPTR " %d %d %d %d %" SCNxPTR,1599 ret = sscanf (p, " %" SCNxPTR " %d %d %d %d %" SCNxPTR,
1589 (uintptr_t *) &page, &x, &y, &w, &h,1600 (uintptr_t *) &page, &x, &y, &w, &h,
1590 (uintptr_t *) &data);1601 (uintptr_t *) &data);
1591 if (ret != 6) {1602 if (ret != 6) {
@@ -1602,12 +1613,13 @@ static void * mainloop (void UNUSED_ATTR *unused) · 10 unmodified lines
1602 x, y, (uintptr_t) (tile),1613 x, y, (uintptr_t) (tile),
1603 tile->w * tile->h * tile->pixmap->n,1614 tile->w * tile->h * tile->pixmap->n,
1604 b - a);1615 b - a);
1616 break;
1605 }1617 }
1606 CASE (trimset) {1618 case Ctrimset: {
1607 fz_irect fuzz;1619 fz_irect fuzz;
1608 int trimmargins;1620 int trimmargins;
1609 1621
1610 ret = sscanf (p + 7, " %d %d %d %d %d",1622 ret = sscanf (p, " %d %d %d %d %d",
1611 &trimmargins, &fuzz.x0, &fuzz.y0, &fuzz.x1, &fuzz.y1);1623 &trimmargins, &fuzz.x0, &fuzz.y0, &fuzz.x1, &fuzz.y1);
1612 if (ret != 5) {1624 if (ret != 5) {
1613 errx (1, "malformed trimset `%.*s' ret=%d", len, p, ret);1625 errx (1, "malformed trimset `%.*s' ret=%d", len, p, ret);
@@ -1620,12 +1632,13 @@ static void * mainloop (void UNUSED_ATTR *unused) · 6 unmodified lines
1620 state.trimfuzz = fuzz;1632 state.trimfuzz = fuzz;
1621 }1633 }
1622 unlock ("trimset");1634 unlock ("trimset");
1635 break;
1623 }1636 }
1624 CASE (settrim) {1637 case Csettrim: {
1625 fz_irect fuzz;1638 fz_irect fuzz;
1626 int trimmargins;1639 int trimmargins;
1627 1640
1628 ret = sscanf (p + 7, " %d %d %d %d %d",1641 ret = sscanf (p, " %d %d %d %d %d",
1629 &trimmargins, &fuzz.x0, &fuzz.y0, &fuzz.x1, &fuzz.y1);1642 &trimmargins, &fuzz.x0, &fuzz.y0, &fuzz.x1, &fuzz.y1);
1630 if (ret != 5) {1643 if (ret != 5) {
1631 errx (1, "malformed settrim `%.*s' ret=%d", len, p, ret);1644 errx (1, "malformed settrim `%.*s' ret=%d", len, p, ret);
@@ -1646,11 +1659,12 @@ static void * mainloop (void UNUSED_ATTR *unused) · 14 unmodified lines
1646 process_outline ();1659 process_outline ();
1647 unlock ("settrim");1660 unlock ("settrim");
1648 printd ("continue %d", state.pagecount);1661 printd ("continue %d", state.pagecount);
1662 break;
1649 }1663 }
1650 CASE (sliceh) {1664 case Csliceh: {
1651 int h;1665 int h;
1652 1666
1653 ret = sscanf (p + 6, " %d", &h);1667 ret = sscanf (p, " %d", &h);
1654 if (ret != 1) {1668 if (ret != 1) {
1655 errx (1, "malformed sliceh `%.*s' ret=%d", len, p, ret);1669 errx (1, "malformed sliceh `%.*s' ret=%d", len, p, ret);
1656 }1670 }
@@ -1662,12 +1676,12 @@ static void * mainloop (void UNUSED_ATTR *unused) · 5 unmodified lines
1662 state.tex.owners[i].slice = NULL;1676 state.tex.owners[i].slice = NULL;
1663 }1677 }
1664 }1678 }
1679 break;
1665 }1680 }
1666 CASE (interrupt) {1681 case Cinterrupt:
1667 printd ("vmsg interrupted");1682 printd ("vmsg interrupted");
1668 }1683 break;
1669#undef CASE1684 default:
1670 else {
1671 errx (1, "unknown command %.*s", len, p);1685 errx (1, "unknown command %.*s", len, p);
1672 }1686 }
1673 }1687 }
main.ml+37−20
@@ -184,10 +184,27 @@ let intentry_with_suffix text key = · 183 unmodified lines
184 TEcont text184 TEcont text
185;;185;;
186 186
187let wcmd fmt =187module C = struct
188 let dopen = '\000';;
189 let cs = '\001';;
190 let freepage = '\002';;
191 let freetile = '\003';;
192 let search = '\004';;
193 let geometry = '\005';;
194 let reqlayout = '\006';;
195 let page = '\007';;
196 let tile = '\008';;
197 let trimset = '\009';;
198 let settrim = '\010';;
199 let sliceh = '\011';;
200 let interrupt = '\012';;
201end;;
202
203let wcmd cmd fmt =
188 let b = Buffer.create 16 in204 let b = Buffer.create 16 in
189 Printf.kbprintf205 Printf.kbprintf
190 (fun b ->206 (fun b ->
207 Buffer.add_char b cmd;
191 let b = Buffer.to_bytes b in208 let b = Buffer.to_bytes b in
192 Ffi.wcmd state.ss b @@ Bytes.length b209 Ffi.wcmd state.ss b @@ Bytes.length b
193 ) b fmt210 ) b fmt
@@ -521,7 +538,7 @@ let tilepage n p layout = · 327 unmodified lines
521 then Ffi.getpbo w h conf.colorspace538 then Ffi.getpbo w h conf.colorspace
522 else ~< "0"539 else ~< "0"
523 in540 in
524 wcmd "tile %s %d %d %d %d %s" (~> p) x y w h (~> pbo);541 wcmd C.tile "%s %d %d %d %d %s" (~> p) x y w h (~> pbo);
525 state.currently <-542 state.currently <-
526 Tiling (543 Tiling (
527 l, p, conf.colorspace, conf.angle,544 l, p, conf.colorspace, conf.angle,
@@ -554,7 +571,7 @@ let load pages = · 26 unmodified lines
554 | l :: rest ->571 | l :: rest ->
555 begin match getopaque l.pageno with572 begin match getopaque l.pageno with
556 | None ->573 | None ->
557 wcmd "page %d %d" l.pageno l.pagedimno;574 wcmd C.page "%d %d" l.pageno l.pagedimno;
558 state.currently <- Loading (l, state.gen);575 state.currently <- Loading (l, state.gen);
559 | Some opaque ->576 | Some opaque ->
560 tilepage l.pageno opaque pages;577 tilepage l.pageno opaque pages;
@@ -730,7 +747,7 @@ let invalidate s f = · 169 unmodified lines
730;;747;;
731 748
732let flushpages () =749let flushpages () =
733 Hashtbl.iter (fun _ opaque -> wcmd "freepage %s" (~> opaque)) state.pagemap;750 Hashtbl.iter (fun _ opaque -> wcmd C.freepage "%s" (~> opaque)) state.pagemap;
734 Hashtbl.clear state.pagemap;751 Hashtbl.clear state.pagemap;
735;;752;;
736 753
@@ -738,7 +755,7 @@ let flushtiles () = · 1 unmodified line
738 if not (Queue.is_empty state.tilelru)755 if not (Queue.is_empty state.tilelru)
739 then (756 then (
740 Queue.iter (fun (k, p, s) ->757 Queue.iter (fun (k, p, s) ->
741 wcmd "freetile %s" (~> p);758 wcmd C.freetile "%s" (~> p);
742 state.memused <- state.memused - s;759 state.memused <- state.memused - s;
743 Hashtbl.remove state.tilemap k;760 Hashtbl.remove state.tilemap k;
744 ) state.tilelru;761 ) state.tilelru;
@@ -782,12 +799,12 @@ let opendoc path password = · 37 unmodified lines
782 else state.origin799 else state.origin
783 in800 in
784 Wsi.settitle ("llpp " ^ mbtoutf8 (Filename.basename titlepath));801 Wsi.settitle ("llpp " ^ mbtoutf8 (Filename.basename titlepath));
785 wcmd "open %d %d %s\000%s\000%s\000"802 wcmd C.dopen "%d %d %s\000%s\000%s\000"
786 (btod conf.usedoccss) !layouth803 (btod conf.usedoccss) !layouth
787 path password conf.css;804 path password conf.css;
788 invalidate "reqlayout"805 invalidate "reqlayout"
789 (fun () ->806 (fun () ->
790 wcmd "reqlayout %d %d %d %s\000"807 wcmd C.reqlayout " %d %d %d %s\000"
791 conf.angle (FMTE.to_int conf.fitmodel)808 conf.angle (FMTE.to_int conf.fitmodel)
792 (stateh state.winh) state.nameddest809 (stateh state.winh) state.nameddest
793 );810 );
@@ -987,7 +1004,7 @@ let reshape ?(firsttime=false) w h = · 193 unmodified lines
987 | Cmulti ((c, _, _), _) -> (w - (c-1)*conf.interpagespace) / c1004 | Cmulti ((c, _, _), _) -> (w - (c-1)*conf.interpagespace) / c
988 | Csplit (c, _) -> w * c1005 | Csplit (c, _) -> w * c
989 in1006 in
990 wcmd "geometry %d %d %d" w (stateh h) (FMTE.to_int conf.fitmodel)1007 wcmd C.geometry "%d %d %d" w (stateh h) (FMTE.to_int conf.fitmodel)
991 );1008 );
992;;1009;;
993 1010
@@ -1016,7 +1033,7 @@ let gctiles () = · 22 unmodified lines
1016 then Queue.push lruitem state.tilelru1033 then Queue.push lruitem state.tilelru
1017 else (1034 else (
1018 Ffi.freepbo p;1035 Ffi.freepbo p;
1019 wcmd "freetile %s" (~> p);1036 wcmd C.freetile "%s" (~> p);
1020 state.memused <- state.memused - s;1037 state.memused <- state.memused - s;
1021 state.uioh#infochanged Memused;1038 state.uioh#infochanged Memused;
1022 Hashtbl.remove state.tilemap k;1039 Hashtbl.remove state.tilemap k;
@@ -1214,7 +1231,7 @@ let act cmds = · 191 unmodified lines
1214 Hashtbl.fold (fun ((pageno, _) as key) opaque accu ->1231 Hashtbl.fold (fun ((pageno, _) as key) opaque accu ->
1215 if not (IntSet.mem pageno set)1232 if not (IntSet.mem pageno set)
1216 then (1233 then (
1217 wcmd "freepage %s" (~> opaque);1234 wcmd C.freepage "%s" (~> opaque);
1218 key :: accu1235 key :: accu
1219 )1236 )
1220 else accu1237 else accu
@@ -1279,7 +1296,7 @@ let act cmds = · 58 unmodified lines
1279 Ffi.unmappbo opaque;1296 Ffi.unmappbo opaque;
1280 if tilew != conf.tilew || tileh != conf.tileh1297 if tilew != conf.tilew || tileh != conf.tileh
1281 then (1298 then (
1282 wcmd "freetile %s" (~> opaque);1299 wcmd C.freetile "%s" (~> opaque);
1283 state.currently <- Idle;1300 state.currently <- Idle;
1284 load state.layout;1301 load state.layout;
1285 )1302 )
@@ -1424,7 +1441,7 @@ let search pattern forward = · 138 unmodified lines
1424 | [] -> 0, 01441 | [] -> 0, 0
1425 | l :: _ -> l.pageno, (l.pagey + if forward then 0 else 0*l.pagevh)1442 | l :: _ -> l.pageno, (l.pagey + if forward then 0 else 0*l.pagevh)
1426 in1443 in
1427 wcmd "search %d %d %d %d,%s\000"1444 wcmd C.search "%d %d %d %d,%s\000"
1428 (btod conf.icase) pn py (btod forward) pattern;1445 (btod conf.icase) pn py (btod forward) pattern;
1429;;1446;;
1430 1447
@@ -1488,7 +1505,7 @@ let reqlayout angle fitmodel = · 57 unmodified lines
1488 );1505 );
1489 conf.fitmodel <- fitmodel;1506 conf.fitmodel <- fitmodel;
1490 invalidate "reqlayout"1507 invalidate "reqlayout"
1491 (fun () -> wcmd "reqlayout %d %d %d"1508 (fun () -> wcmd C.reqlayout "%d %d %d"
1492 conf.angle (FMTE.to_int conf.fitmodel) (stateh state.winh));1509 conf.angle (FMTE.to_int conf.fitmodel) (stateh state.winh));
1493;;1510;;
1494 1511
@@ -1499,7 +1516,7 @@ let settrim trimmargins trimfuzz = · 4 unmodified lines
1499 conf.trimfuzz <- trimfuzz;1516 conf.trimfuzz <- trimfuzz;
1500 let x0, y0, x1, y1 = trimfuzz in1517 let x0, y0, x1, y1 = trimfuzz in
1501 invalidate "settrim"1518 invalidate "settrim"
1502 (fun () -> wcmd "settrim %d %d %d %d %d"1519 (fun () -> wcmd C.settrim "%d %d %d %d %d"
1503 (btod conf.trimmargins) x0 y0 x1 y1);1520 (btod conf.trimmargins) x0 y0 x1 y1);
1504 flushpages ();1521 flushpages ();
1505;;1522;;
@@ -1985,7 +2002,7 @@ let gotohist (path, c, bookmarks, x, anchor, origin) = · 479 unmodified lines
1985 setconf conf c;2002 setconf conf c;
1986 Ffi.setdcf conf.dcf;2003 Ffi.setdcf conf.dcf;
1987 let x0, y0, x1, y1 = conf.trimfuzz in2004 let x0, y0, x1, y1 = conf.trimfuzz in
1988 wcmd "trimset %d %d %d %d %d" (btod conf.trimmargins) x0 y0 x1 y1;2005 wcmd C.trimset "%d %d %d %d %d" (btod conf.trimmargins) x0 y0 x1 y1;
1989 Wsi.reshape c.cwinw c.cwinh;2006 Wsi.reshape c.cwinw c.cwinh;
1990 opendoc path origin;2007 opendoc path origin;
1991 setzoom c.zoom;2008 setzoom c.zoom;
@@ -2503,7 +2520,7 @@ let enterinfomode = · 511 unmodified lines
2503 (fun () -> conf.sliceheight)2520 (fun () -> conf.sliceheight)
2504 (fun v ->2521 (fun v ->
2505 conf.sliceheight <- v;2522 conf.sliceheight <- v;
2506 wcmd "sliceh %d" conf.sliceheight;2523 wcmd C.sliceh "%d" conf.sliceheight;
2507 );2524 );
2508 src#int "anti-aliasing level"2525 src#int "anti-aliasing level"
2509 (fun () -> conf.aalevel)2526 (fun () -> conf.aalevel)
@@ -2566,7 +2583,7 @@ let enterinfomode = · 56 unmodified lines
2566 (fun () -> CSTE.to_string conf.colorspace)2583 (fun () -> CSTE.to_string conf.colorspace)
2567 (fun v ->2584 (fun v ->
2568 conf.colorspace <- CSTE.of_int v;2585 conf.colorspace <- CSTE.of_int v;
2569 wcmd "cs %d" v;2586 wcmd C.cs "%d" v;
2570 load state.layout;2587 load state.layout;
2571 );2588 );
2572 src#paxmark "pax mark method"2589 src#paxmark "pax mark method"
@@ -2870,7 +2887,7 @@ let enterannotmode opaque slinkindex = · 297 unmodified lines
2870 else split accu b (i+1)2887 else split accu b (i+1)
2871 in2888 in
2872 let cleanup () =2889 let cleanup () =
2873 wcmd "freepage %s" (~> opaque);2890 wcmd C.freepage "%s" (~> opaque);
2874 let keys =2891 let keys =
2875 Hashtbl.fold (fun key opaque' accu ->2892 Hashtbl.fold (fun key opaque' accu ->
2876 if opaque' = opaque'2893 if opaque' = opaque'
@@ -3948,7 +3965,7 @@ let linknavkeyboard key mask linknav = · 1071 unmodified lines
3948 3965
3949let keyboard key mask =3966let keyboard key mask =
3950 if (key = Char.code 'g' && Wsi.withctrl mask) && not (istextentry state.mode)3967 if (key = Char.code 'g' && Wsi.withctrl mask) && not (istextentry state.mode)
3951 then wcmd "interrupt"3968 then wcmd C.interrupt ""
3952 else state.uioh <- state.uioh#key key mask3969 else state.uioh <- state.uioh#key key mask
3953;;3970;;
3954 3971
@@ -4273,7 +4290,7 @@ let annot inline x y = · 318 unmodified lines
4273 | Some (opaque, n, ux, uy) ->4290 | Some (opaque, n, ux, uy) ->
4274 let add text =4291 let add text =
4275 Ffi.addannot opaque ux uy text;4292 Ffi.addannot opaque ux uy text;
4276 wcmd "freepage %s" (~> opaque);4293 wcmd C.freepage "%s" (~> opaque);
4277 Hashtbl.remove state.pagemap (n, state.gen);4294 Hashtbl.remove state.pagemap (n, state.gen);
4278 flushtiles ();4295 flushtiles ();
4279 gotoxy state.x state.y4296 gotoxy state.x state.y

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t