| <<<Back 1 day (to 2014/06/17) | 2014/06/18 |
mattchz | morning | 09:01.48 |
kens | Hi | 09:01.53 |
ghostbot | Welcome to #ghostscript, the channel for Ghostscript and MuPDF. If you have a question, please ask it, don't ask to ask it. Do be prepared to wait for a reply as devs will check the logs and reply when they come on line. | 09:01.53 |
Robin_Watts | morning mattchz | 09:02.25 |
pedro_pc | what is ghostbot's criteria for welcoming? | 09:03.45 |
kens | Just saying 'Hi' with nothing else, or I think hello, possibly some other | 09:04.18 |
Robin_Watts | It spots any one of a set number of greetings, not directed at anyone. | 09:04.25 |
pedro_pc | ah, cool :) | 09:04.31 |
| probably works pretty well overall | 09:04.40 |
Robin_Watts | so "Hi", "Hello", etc, but not "Hi, Peds" etc. | 09:04.47 |
kens | I htink we should add hii, hiii, hiiii, hiiiii | 09:04.59 |
Robin_Watts | It could be a lot smarter. | 09:05.05 |
pedro_pc | kens> :) | 09:05.10 |
mattchz | ah, itâs flash upgrade time | 09:05.41 |
pedro_pc | mattchz> it's *always* flash update time | 09:05.58 |
kens | Hmm, thought I did that last week | 09:06.02 |
pedro_pc | and java | 09:06.02 |
mattchz | yeah, Iâd hope weâd be over that by 2014 | 09:06.10 |
pedro_pc | hi Paul - see you got a response from Brad at Good - guess I should change my email to an artifex one if I want a reply ;) | 09:17.09 |
kens | Heading out for a few hours, back around lunch time | 09:18.19 |
| If anyhone wants to look into flights for October..... | 09:18.35 |
paulgardiner | pedro_pc: yeah that's probably it. | 09:18.57 |
pedro_pc | paulgardiner: when you get a chance could you try GoodShare with the iOS app and see if it lets you open any office docs please? I've tried on Android but i suspect their GC is set such that our accounts don't have permissions to use SO so I get a message saying there are no apps allowed by out IT policy | 09:22.16 |
paulgardiner | pedro_pc: Sure. Was intending to try that anyway. Might not get to it for an hour or so. | 09:23.19 |
pedro_pc | (the password works fine btw - may have been useful to have that when they sent the access keys ;) | 09:23.51 |
| paulgardiner> no rush - just worth checking you see the same issues before going back to Brad to ask about it | 09:24.19 |
paulgardiner | Yes sending us that with the access keys might have been nice. :-) | 09:25.54 |
purn | hi Robin_Watts......... | 10:02.03 |
Robin_Watts | Morning | 10:02.24 |
purn | I am already build a function which can create a simple STAMP annotation like APPROVED | 10:03.16 |
Robin_Watts | fab. | 10:03.25 |
purn | But I have to write the stream part line by line | 10:04.07 |
| can i create the strem information autometically? | 10:04.32 |
Robin_Watts | For an annotation, the stream is the actual set of pdf operators to draw the annotiation? | 10:07.15 |
| i.e. it's the AP stream you're talking about? | 10:07.24 |
purn | yes | 10:08.45 |
| both AP and BBA | 10:08.57 |
Robin_Watts | Well, creating a stream object should be doable within MuPDF. | 10:09.10 |
| but the complexity will be in creating the actual contents for the stream - the set of operators used. | 10:09.38 |
| Is that what you mean? | 10:09.42 |
purn | yes | 10:10.49 |
Robin_Watts | Right. | 10:11.15 |
| We have some code that is intended to allow you to call the standard fz device functions (draw an image, place some text etc) and have that produce the pdf operator stream that does the same thing. | 10:12.16 |
| That's the pdf-device.c stuff. | 10:12.22 |
| BUT it's not complete. | 10:12.26 |
| and it may not be quite in the form you want. | 10:12.32 |
| Have a look for code that calls pdf_new_pdf_device and see if you can find what you need. | 10:13.42 |
mattchz | robin: updated review: http://git.ghostscript.com/?p=user/matt/mupdf.git;a=commitdiff;h=13e3327167cf47aa7c202ed83835bf43169ac8c1 | 10:13.59 |
Robin_Watts | mattchz: Looks good to me. | 10:15.06 |
mattchz | thanks | 10:15.14 |
| btw, if you prefer, I can do this in the future as a separate commit, then just rebase just before I push to golden if thatâs easier to review. | 10:16.30 |
Robin_Watts | How was this not a separate commit ? | 10:16.52 |
mattchz | I mean, a separate commit applied on top of my previous version of the code | 10:17.20 |
Robin_Watts | oh, right, which you could then squash together? | 10:17.32 |
mattchz | so you see a âdiff of diffs" | 10:17.32 |
| yeah | 10:17.34 |
Robin_Watts | Yeah, for a larger review that might be nice, but for a little one like this, it's fine. | 10:17.48 |
| Whatever works easiest. | 10:17.56 |
mattchz | I squashed it immediately, but Iâm just saying I could squash it later if that works better. | 10:17.56 |
| ok | 10:17.59 |
Robin_Watts | runs. back in a bit. | 10:18.11 |
mattchz | paul: should we just close this? http://bugs.ghostscript.com/show_bug.cgi?id=694568 | 10:48.23 |
| (no feedback from OP) | 10:48.31 |
paulgardiner | Yes. I believe we've fixed that. | 10:49.35 |
mattchz | Ok, will do. | 10:49.43 |
paulgardiner | ta | 10:49.56 |
mattchz | hereâs another trivial review if someone has a minute please :) | 11:22.16 |
| http://git.ghostscript.com/?p=user/matt/mupdf.git;a=commitdiff;h=38402bcf8dfea7b08cb5b3e6948af078d0b3874b | 11:22.16 |
Robin_Watts | mattchz: Looks good to me. | 11:45.02 |
kens | Hmm, well Virgin fly out to Chicago direct, but coming back would be on Delta with a stop in New York. I think not..... | 11:58.47 |
chrisl | Really, I must have missed that.... | 11:59.20 |
kens | Well, that's what its offering me... | 11:59.44 |
| I'm guessing Virgin don't fly to Chicago after 31st September or something | 12:00.02 |
chrisl | I was looking at outwards flights on 1st Oct | 12:00.56 |
kens | Hmm,so was I.... | 12:01.19 |
chrisl | And back on the Sunday? | 12:01.38 |
kens | Yes, I did look at the Saturday and it was hugely expensive | 12:02.03 |
| There's a BA option, though a lot of their flights are actually on American | 12:03.00 |
chrisl | Saturday came out about double the price when I checked - I thought that was an improvement | 12:03.04 |
kens | It was about 2.5 I thought, but yes an improvement | 12:03.17 |
chrisl | I get VA flights direct, out and back..... | 12:03.34 |
kens | Weird, I wonder what I'm doing wrong | 12:03.47 |
chrisl | Are you looking on VA's own site? | 12:03.58 |
kens | Yes | 12:04.02 |
chrisl | Erm, ah, now it's gone.... I'm confused | 12:05.02 |
kens | FOund a more detailed planner, lets see what it says | 12:05.04 |
| Well it gives me a lot more options | 12:05.59 |
| There's now an 18:45 departure direct | 12:06.12 |
| and its a VA flight too | 12:06.30 |
| All the other flights are Delta and involve a stop | 12:07.27 |
Robin_Watts | United have 3 non-stop flights on the wed, all 745quid | 12:07.41 |
kens | VA comes in at 668.91 | 12:07.54 |
| Out on Wednesday, back on Sunday arriving Monday | 12:08.15 |
Robin_Watts | and 3 back on sunday. | 12:08.34 |
chrisl | I can't tell if the United flights have power outlets | 12:09.14 |
Robin_Watts | flying backon saturday is more expensive (1300+) | 12:09.42 |
kens | It is with everyone, I think VA came in at 930 or so | 12:10.01 |
chrisl | VA needs their website proof read properly: "View less search options" | 12:10.39 |
Robin_Watts | chrisl: Looks like no power to me :( | 12:11.59 |
kens | I don't see much ot choose between United and VA except that VA is cheaper. | 12:12.00 |
chrisl | I now can't get the direct return flight on VA to come up - in fact the site says: "There are no direct flights available for this journey." | 12:12.13 |
kens | There is an earlier United flight on SUnday, but it gets in at 6 am | 12:12.17 |
| The middling United flight is about the same time as the VA one (18:35 vs 18:45) | 12:13.06 |
Robin_Watts | BA has lots of options (codeshare with american) | 12:13.38 |
kens | Yes, I think I mentioned BA above | 12:13.53 |
paulgardiner | pedro_pc: I went to Manage Applications and clicked on SO2-DEV (com.picsel.so2) and don't see it there. | 12:14.20 |
kens | BA also looks slightly more expensive than VA | 12:14.41 |
| comparable with United | 12:14.48 |
| about £766 | 12:15.02 |
Robin_Watts | no flights from brum either. | 12:15.30 |
kens | Hmm, well that wouldn't help me much, though Gatwick would :-) | 12:15.47 |
android_develope | hello | 12:16.39 |
ghostbot | Welcome to #ghostscript, the channel for Ghostscript and MuPDF. If you have a question, please ask it, don't ask to ask it. Do be prepared to wait for a reply as devs will check the logs and reply when they come on line. | 12:16.39 |
kens | There's only one significantly early flight on SUnday for American, which gets in at 22:45 | 12:16.39 |
Robin_Watts | So...VA is cheapest, but involves a stop? | 12:17.57 |
kens | No, there is no stop on what I see this time | 12:18.09 |
Robin_Watts | 1st to 5th ? | 12:18.24 |
kens | But finding the flights on the web sire seems 'tricky' | 12:18.25 |
android_develope | I have a problem using the library under android | 12:18.33 |
| please me | 12:18.36 |
kens | Yes out on 1st, back on 5th VS039 and VS040 | 12:18.39 |
| out 1st 11:00 arrive 13:35 back 5th 18:45 arrive 08:45 | 12:19.11 |
Robin_Watts | It's resolutely offering me a stop. | 12:19.18 |
kens | It did for me too until I went to the detailed planner | 12:19.30 |
| It also didn't offer me teh VA return flight and only offered Delta | 12:19.44 |
| Its also not the cheapest fare anymore | 12:20.02 |
| Its now £764 suspiciously similar to all the others..... | 12:20.12 |
android_develope | ignore me because I'm black? | 12:20.19 |
pedro_pc | paulgardiner> only SOG_DEV has the bindings at present, not SO2_DEV (SO2_DEV has the regular smartoffice2 package name iirc, not the smartofficegd one) | 12:20.43 |
chrisl | kens: how do you get the detailed planner? | 12:20.56 |
Robin_Watts | android_develope: If you ask coherent questions, politely, and wait for an answer then you stand a chance of getting answered. | 12:21.07 |
kens | Form the front page I pressed the 'more options' button or something like that | 12:21.13 |
| Yeah 'More options' near the top, under the 'fomr' | 12:21.45 |
| err, 'from' | 12:21.51 |
pedro_pc | paulgardiner we can easily add the file-transfer bindings to SO2_DEV for testing with the com.picsel.smartoffice2 packagename if you want | 12:21.52 |
Robin_Watts | kens: I see 764 for the price that way. | 12:22.03 |
kens | chrisl that then looks like the old VA website did | 12:22.06 |
paulgardiner | pedro_pc: no, don't worry. I'll swap to SOG_DEV | 12:22.23 |
chrisl | kens: Oh, that is *weird*! | 12:23.05 |
kens | I chose London All to CHicago and CHicago to London All out 1/10/14 back 05/10/14 economy both ways, lowest fare +/- 3 days | 12:23.10 |
| chrisl you see it now ? | 12:23.37 |
Robin_Watts | virgins own flight is not the lowest fare. Maybe that's what confused the newer search. | 12:23.42 |
kens | That's possible, though it stinks... | 12:24.00 |
chrisl | kens: yes. I'm fairly sure that's the return flight the "normal" site listed for me first thing this morning..... | 12:24.10 |
kens | :-) | 12:24.17 |
| There doesn't seem to be a lot to choose between them | 12:24.34 |
chrisl | Not so much a search, more a lottery........ | 12:24.43 |
Robin_Watts | Let's have a look at the seat plan for the united flights... | 12:25.10 |
qwebirc563292 | thanks for the advice | 12:25.15 |
kens | UNless you want to fly out early Sunday and get in late Sunday in which case BA/American is the way to go | 12:25.18 |
chrisl | Not that keen on AA.... | 12:26.01 |
Robin_Watts | united is 3x3x3 across rather than 3x4x3 on VA. | 12:26.11 |
kens | Then United and Virgin are very simmilar all round | 12:26.17 |
| Robin_Watts : not that bothered by the airframe config | 12:26.31 |
| I wouldn't take a middle seat anyway | 12:26.40 |
| OK I'm going to take the Virgin flight, I can get a better deal with extra legroom from them than from United. | 12:27.33 |
Robin_Watts | kens: indeed, but I still prefer 3 in the middle, I think. More chance of a spare seat/less disruption by my calculations. | 12:27.39 |
kens | It doesn't matter if we take different flights this time anyway | 12:27.59 |
Robin_Watts | indeed. | 12:28.05 |
chrisl | I'm thinking VA, as the in-flight ents tend to be better...... | 12:28.53 |
kens | Hmm I oculd upgrade to premium on the way back for £176, now that's actually quite tempting | 12:29.00 |
Robin_Watts | I'll go with the majority, I think. | 12:29.25 |
chrisl | Having said that, if the VA asks me if I need to "chat" once more, I might change my mind! | 12:29.52 |
kens | thinks Sunday will be busy and goes for the premium upgrade | 12:29.56 |
Robin_Watts | If I spend miles I can get E out, and PE back for 825. | 12:32.08 |
kens | Sounds good also | 12:32.26 |
qwebirc563292 | I'm from Russia and bad speak english... | 12:33.01 |
kens | SO that's £60 and how many miles ? | 12:33.04 |
| qwebirc563292 : don't worry just ask your question | 12:33.20 |
Robin_Watts | not sure. | 12:33.25 |
kens | Robin_Watts : no worries | 12:33.33 |
Robin_Watts | 4750 maybe? | 12:34.13 |
kens | Yeah looks likely,something like that anyway | 12:34.39 |
mattchz | robin: thanks | 12:36.26 |
purn | I have seen the pdf_new_pdf_device function | 12:36.53 |
kens | Sigh, and Visa have rejected my card, again.... | 12:37.05 |
purn | Robin_Watts:I have seen the pdf_new_pdf_device function | 12:37.55 |
| If I want to include a image............ how can I do this? | 12:38.26 |
mattchz | where are you guys meeting up this time? | 12:41.01 |
kens | Chicago in October | 12:41.12 |
| December will be in London | 12:41.23 |
mattchz | nice | 12:41.36 |
chrisl | Ugh, "seatmap not available" - too early? | 12:41.54 |
Robin_Watts | chrisl: 60 days. | 12:42.01 |
chrisl | Ah | 12:42.15 |
Robin_Watts | purn: Right, sorry, was busy. | 12:42.27 |
| So, you create a new device with pdf_new_pdf_device. | 12:42.37 |
| You can then call one of the fz_device functions on that device. | 12:42.50 |
| I suspect fz_fill_image(device, ....); | 12:43.46 |
purn | Bassically I want to create a Seal Stamp Annotation................. | 12:44.36 |
| using these function | 12:44.45 |
| How is it possible? | 12:45.01 |
Robin_Watts | purn: I've said before that you're on the bleeding edge of what MuPDF supports. | 12:45.26 |
| jogux: So, after our conversation yesterday, it became clear to me that I perhaps wasn't understanding Edr styles as well as I should. | 12:49.55 |
| I've gone away and done some digging. Am I right in thinking that we can define style rules with selectors 'a' 'b' and 'c', and they will only apply to things that have 'a', 'b' and 'c' set? | 12:51.26 |
| and that if there is another rule with selector 'a', something with selectors 'a' 'b' and 'c' will get the rule 'a' applied, then the 'a' 'b' 'c' rule ? | 12:52.06 |
jogux | I thought 'a' 'b' 'c' might mean c within b within a, but otherwise: yes. | 12:53.17 |
| I actually have a edr_dump for a pptx in front of me now, so can say more helpful things :) | 12:55.42 |
| eg. this in the edr dump: | 12:55.54 |
Robin_Watts | Ok, so this is all sounding a bit more sensible. | 12:56.01 |
jogux | MasterID-2147483649 TxTitle TxLevel-1: | 12:56.05 |
| Display = Block, | 12:56.06 |
| FontWeight = Normal, | 12:56.06 |
| that rule applies to a group with style TxLevel-1 inside a group with style TxTitle inside a group with withMasterId-whatever | 12:56.25 |
Robin_Watts | How many stylesheets in your file ? | 12:57.05 |
| See Art5.pptx in my homedir for a cut down file. | 12:59.44 |
| and Artifex2014.pptx for the original | 12:59.54 |
jogux | robin: 3 stylesheets I think | 13:00.41 |
Robin_Watts | Now, for me, looking at stylesheet 0 (from Art5.pptx), I have: | 13:01.20 |
| TxLevel-{1,2,3,4,5,6,7,8,9} | 13:01.34 |
| plus some others. | 13:01.47 |
| those come, I believe, from the presentation.xml | 13:02.12 |
| The problem we're seeing is that the text in slide1 is supposed to be in TxLevel-3, of a placeholder slide. | 13:03.22 |
purn | ok........+Robin_Watt | 13:03.32 |
Robin_Watts | s/slide/style/ | 13:03.34 |
purn | So, in case of Seal Stamp annotation I have write our own function | 13:04.21 |
Robin_Watts | purn: Certainly you're going to have to write some code, yes. | 13:04.40 |
| You might be able to leverage the existing functions, including the ones I have pointed you at, to do the heavy lifting. | 13:05.33 |
purn | TO create Fill Polygon I have already write a function using pdf_new_pdf_device function........ which is working properly | 13:06.54 |
jogux | robin_watts: right, I have (hopefully) the same edr dump in front of me now. | 13:07.01 |
rayjj | morning, all | 13:07.09 |
Robin_Watts | Possibly we should define the presentation styles as being 'non-placeholder' ones. | 13:07.16 |
| and then we can avoid the placeholder content inadvertently inheriting from the non-placeholders. | 13:08.01 |
purn | But, in case of Seal stamp Annotation some circle information have to include within the BBA info of AP part | 13:08.42 |
| THat is difficalt one | 13:08.54 |
Robin_Watts | purn: What circle info? and what is BBA ? | 13:09.24 |
rayjj | I'm in CDT (UTC-5:00) now, so I'll probably be around earlier | 13:09.50 |
Robin_Watts | Morning rayjj | 13:10.28 |
purn | BBA is one kind of Xobject, which have to declear in AP info...... | 13:10.47 |
kens | Hi rayjj | 13:10.56 |
purn | THis BBA information is't clearly explained in pdf 1.7 reference documentation | 13:11.40 |
kens | I can find no reference to BBA anywhere in the PDF 1.7 reference | 13:11.55 |
qwebirc563292 | Hi rayjj | 13:12.05 |
purn | How to create this BBA Xobject and how to handle this object | 13:12.07 |
kens | purn no idea what you mean by a 'BBA Xobject' | 13:12.24 |
| Do you mean the Apperance stream ? That's an XObject | 13:12.57 |
jogux | robin_watts: I'm not sure I'm understanding which styles should/shouldn't be applied to it yet | 13:13.31 |
purn | 5 0 obj<</Type/Page/Parent 4 0 R/MediaBox[0 0 612 792]/Contents[25 0 R 24 0 R 19 0 R]/Resources<</ProcSet[/PDF]/XObject<</BBA 10 0 R>>>>/Annots 15 0 R/ArtBox[3.663142 419.7082 280.9106 697.0551]>> | 13:13.50 |
Robin_Watts | jogux: It's poorly defined in the spec, but as far as I can work out... | 13:14.06 |
kens | purn BBA isn't a 'type' of anything, its a name. | 13:14.17 |
| Liek /Helvetica is the name of a font | 13:14.31 |
Robin_Watts | We have a presentation.xml that is the top level xml. | 13:14.37 |
| That can contain definitions of styles. | 13:14.46 |
purn | But each Seal Stamp annptation use this BBA | 13:14.53 |
Robin_Watts | These are normal styles. | 13:15.09 |
kens | purn its just a name | 13:15.11 |
| The ProcSET says that /BBA is the name of an XObject | 13:15.29 |
Robin_Watts | Then, every slide has a 'master' slide, and a 'layout' slide. | 13:15.34 |
kens | And when you encoutner that name, you should use the object whose number is 10 and generation is 0 | 13:15.47 |
Robin_Watts | These master slides can define more styles, as can the layout ones. | 13:15.50 |
purn | So, we can repalce this BBA with any word like "PURN" | 13:15.52 |
kens | purn yes you could do that. | 13:15.59 |
Robin_Watts | Those styles are defined by being applied to 'placeholders'. | 13:16.15 |
| In the actual slide1.xml definitions, shapes are defined that actually get displayed. | 13:16.45 |
purn | So, BBA is the name of Xobject? | 13:16.59 |
Robin_Watts | These shapes can optionally be tagged as being 'placeholder' ones. | 13:17.10 |
kens | Yes. you coul use "/BBA Do" to draw the XObject | 13:17.35 |
Robin_Watts | If they are tagged as being placeholder ones, then they should inherit from slideLayout and slideMaster, but not from presentation.xml | 13:17.36 |
| If they are not tagged as being placeholder ones, they should inherit from presentation.xml alone. | 13:17.59 |
kens | In fact I woudl assume that somewhere in the page stream there is a line like "/BBA Do" | 13:18.11 |
Robin_Watts | The problem we have in SOT is that the content is tagged as being a placeholder, but it's inheriting from presentation.xml | 13:18.46 |
purn | yes, in the stream part of AP............ there exist "/BBA Do" | 13:18.55 |
Robin_Watts | jogux: The boss is calling me for lunch, sorry... | 13:18.58 |
kens | purn there you are then | 13:19.04 |
Robin_Watts | purn: So, it just so happens that in the files you are looking at the stamp definitions are defined by using a subsidiary XObject called BBA. | 13:19.35 |
| You don't need to create that. | 13:19.47 |
| It would be perfectly valid to have a stamp annotation with no such XObject. | 13:20.08 |
| back in a bit. | 13:20.19 |
purn | ok......... | 13:20.44 |
| So, If we just create the AP and then call the pdf_set_annot_appearence function................. then is it working porperly? | 13:22.45 |
kens | purn I cna't help you with MuPDF. But I would assume that if you have a self-contained appearance stream, then yes | 13:23.16 |
purn | self-contained appearance stream ---------- means? | 13:23.39 |
kens | One that doesn't reference externalobjects (like Xobjects) | 13:24.02 |
purn | So, if I create the AP portion properly and the call pdf_set_annot_appearence function........ we think that it will be working properly | 13:25.15 |
kens | I would assume so, I'm not a MuPDF developer | 13:25.38 |
jogux | robin_watts: so your question is "how can I stop this group idx=79 using styles from stylesheet 0"? | 13:26.46 |
purn | So, now I am tring to do this........ | 13:26.47 |
| thankx in advance for help | 13:27.15 |
| I will be back tomorrow | 13:27.49 |
jogux | robin_Watts: urgh. so layout has specific code for doing random stuff if it finds style rules with particular names :-S | 13:33.31 |
paulgardiner | pedro_pc: I rebuilt using com.picsel.smartofficegd and still Good Share is offering me nothing other than Open in as a way to communicate with SOG | 13:46.47 |
pedro_pc | is your iOS package name com.picsel.smartoffice2gd? | 13:52.16 |
| (the Good ApplciationID is com.picsel.smartofficegd for SOG_DEV, but the iOS packagename is com.picsel.smartoffice2gd) | 13:53.22 |
pedro_pc | is guessing that may be the problem, as it may be overriden by the marketplace iOS app now that it has been reinstated | 13:54.48 |
| basically both the marketplace app and the SOG_DEV have the same iOS packagename | 13:56.49 |
paulgardiner | jogux: 6b6e7e25's changes to iphone_postlink.py looks to have a side effect of making ALIEN_IPHONE_RELEASE disable some of the GOOD_DYNAMICS specific set up, yet we have ALIEN_IPHONE_RELEASE option used in the appstore_ios_gd release config | 13:58.40 |
jogux | looks | 13:59.03 |
paulgardiner | I'm not sure what the correct fix is. I'm not exactly sure what ALIEN_IPHONE_RELEASE does to be honest | 13:59.46 |
jogux | that was a fix up for 6ac5b5a9dae9e34093969206909cc6757cd2fd8d | 14:00.36 |
pedro_pc | paulgardiner> I suggest I change the SOG_DEV iOS packagename to com.picsel.smartofficegd to match what you have built and to avoid clashing with the marketplace app (if that's actually the issue) | 14:00.49 |
| sound ok? | 14:00.53 |
paulgardiner | pedro_pc: I've confirmed that, even using the GD bundle id for which all the services are defined doesn't provoke Good Share into offereing anything new | 14:01.09 |
| pedro_pc: I'm confused. I thought that was the packagename for SOG_DEV | 14:02.19 |
pedro_pc | the Good applicationID is com.picsel.smartofficegd | 14:02.50 |
| the iOS bundleID is com.picsel.smartoffice2gd | 14:03.07 |
jogux | paulgardiner: okay, yes, that's broken good :( | 14:03.31 |
| paulgardiner: I suspect move the if 'ALIEN_IPHONE_RELEASE' test from the start of both if chains to the end might fix it? | 14:04.20 |
paulgardiner | jogux: I just left out ALIEN_IPHONE_RELEASE from the build and it seemed fine, but I don't know if I should be doing that in general | 14:04.21 |
jogux | checks what that does | 14:04.30 |
paulgardiner | I grepped and found very few occurrences | 14:04.56 |
| pedro_pc: Ah, I see. Didn't notice that. Yes. That sounds like a good idea | 14:05.36 |
Robin_Watts | jogux: idx=79, yes. | 14:06.15 |
jogux | paulgardiner: ALIEN_IPHONE_RELEASE makes it actually generate the IPAs :-) | 14:06.18 |
Robin_Watts | urgh. hardwired special cases? | 14:06.28 |
| where are you seeing that? | 14:06.33 |
jogux | robin_watts: storePlaceholderText, libraries/edr/layout/drawing/layout-drawing.c | 14:07.17 |
paulgardiner | jogux: Yeah I read that somewhere but couldn't see how it did in the code | 14:07.26 |
jogux | paulgardiner: around like 825 of iphone_postlink.py | 14:08.00 |
| s/like/line/ | 14:08.12 |
paulgardiner | code blind | 14:08.18 |
pedro_pc | paulgardiner: that's the GC updated - guess you may need a new access key? | 14:08.20 |
paulgardiner | pedro_pc: no worries. I can sort that. It's be my thousandth today :-) | 14:09.09 |
jogux | paulgardiner: I think my suggested fix should work; ie. move the alien_iphone_release test down 10 or so lines to become the final elif | 14:09.22 |
pedro_pc | Robin_Watts: tbh I'm not clear whether we can properly fix the placeholder style hierarchy without translating the master & layout masters too, and referencin gthem during layout | 14:09.28 |
mattchz | paul/robin: would you mind taking a quick look at http://bugs.ghostscript.com/show_bug.cgi?id=693607 and letting me know if you think my comment makes sense? | 14:09.34 |
paulgardiner | jogux: ok good thanks | 14:09.38 |
pedro_pc | : may be just worrying too much though ;) | 14:09.40 |
mattchz | I think you mentioned that youâd already been through the nightmare with bitmap recycling | 14:09.50 |
jogux | pedro_pc: we /do/ translate the masters don't we? | 14:09.54 |
pedro_pc | the styles, iirc - not sure we actually have any structural entity do we? | 14:10.25 |
jogux | edr has a whole load of master page stuff in it anyway :) | 14:10.25 |
| yeah, I believe we do. | 14:10.34 |
paulgardiner | mattchz: Makes sense to me | 14:10.50 |
Robin_Watts | pedro_pc: I vaguely thought that was what it was doing. | 14:11.02 |
jogux | pedro_pc: http://pastebin.com/bUfsiHjp etc | 14:11.23 |
mattchz | paulgardiner> did you find you were only able to resolve the problems you were having on more recent OSs? | 14:11.26 |
Robin_Watts | mattchz: I think we thought it had been fixed for all versions of android. | 14:12.03 |
paulgardiner | Yes and no. The testing was only on recent versions of Android, but the fix which was to no longer churn bitmaps should work for all versions | 14:12.59 |
| There may be Android versions for which the screen doesn't update correctly but running out of bitmap memory shouldn't be a problem | 14:13.46 |
pedro_pc | ok, cool - in that case are we just having issues because we're putting non-unique style selectors into a single stylesheet? | 14:13.47 |
Robin_Watts | pedro_pc:, jogux: This is my full Edr dump + layout dump: http://pastebin.com/rWBHjLVn | 14:14.14 |
| pedro_pc: I see 3 stylesheets. | 14:14.22 |
pedro_pc | looks at the pastebin rather than guessing at problmes ... | 14:15.10 |
mattchz | paulgardiner> so, is it PageViews that are no longer supposed to get recycled? | 14:15.56 |
Robin_Watts | The problem (in this case), AIUI, is that the styles defined in the slidelayout/slidemaster do NOT define font sizes. | 14:15.57 |
mattchz | sorry, I mean, chruned | 14:16.00 |
paulgardiner | PageViews were always supposed to be reused, but they used to reallocate their bitmaps | 14:17.12 |
Robin_Watts | but SOT is falling back from "MasterID-2147485618 TxBody TxLevel-3" in Stylesheet 2 to "TxLevel-3" in Stylesheet 0. | 14:17.20 |
| so placeholder text, which is supposed to have the 'default' text size, is ending up with the larger than default text size given in the presentation.xml styles (which end up in stylesheet 0) | 14:18.00 |
jogux | I can't quite get my head around how to solve this. | 14:18.03 |
Robin_Watts | jogux: I am having trouble reading the Edr. | 14:18.42 |
| From the fill list, how do we know which stylesheet is being used ? | 14:18.57 |
jogux | adding a !PlaceHolderID='1' to the style rules in spreadsheet 0 would presumably solve it for this case, but not the generic one. | 14:18.59 |
| robin_Watts: all of them. | 14:19.03 |
| all stylesheets are always used afaik | 14:19.13 |
paulgardiner | pedro_pc: well spotted, but still Good Share is offering me no other options than Open In. I've emailed Brad. I guess it could be I just don't know how to drive Good Share, but it seems obvious enough. | 14:19.27 |
| I have to nip out quickly | 14:19.36 |
| biab | 14:19.38 |
jogux | robin_watts: albeit I'm curious why your question contains 'from the fill list'. | 14:19.54 |
| the fill list for this edr is empty/unset. | 14:20.19 |
Robin_Watts | jogux: Oh, I was reading the Edr wrong. | 14:20.45 |
pedro_pc | slide placeholders should always inherit from slideLayout placeholders, which inherit from slideMaster placeholders. I don't know why the presentation is also defining the TxLevel styles (unless that's intended as an explicit set of defaults) | 14:20.47 |
Robin_Watts | The presentation can define TxLevel styles. They are used for NON placeholder content only. | 14:21.29 |
| http://apache-poi.1045710.n5.nabble.com/Need-Help-to-identify-the-default-text-style-properties-of-a-slide-in-PPT-td5020010.html | 14:21.45 |
mattchz | Hmm, Iâm guessing PageViews *donât* get reused across a rotation, | 14:21.54 |
| though? | 14:21.56 |
| which is where this problem is seen | 14:22.03 |
paulgardiner | Oh! Okay. That might well be a problem. | 14:22.38 |
mattchz | yeah, that seems to be what happens. | 14:23.20 |
| ok, that makes sense then. | 14:23.54 |
| I guess we can probably call Bitmap.reconfigure on a rotation | 14:24.36 |
jogux | robin_watts: was I correct that adding a !PlaceHolderID='1' to the style rules in spreadsheet 0 would presumably solve it for this case, but not the generic one. ? | 14:28.24 |
| if so, more generically, we could set a IAmAPlaceHolder style onto applicable groups, and make spreadsheet 0 rules all have !IAmAPlaceHolder in there selectors. | 14:29.22 |
Robin_Watts | Yes, exactly. | 14:30.39 |
| I wasn't aware we could have !IAmAPlaceHolder. | 14:30.50 |
| I was thinking we'd need to add "NonPlaceHolder" to everything, but placeholder is neater. | 14:31.13 |
jogux | ok, I should check if I'm imagining that or not then :) | 14:31.28 |
| oh, my brain is remembering that CSS has a ! format for selectors, meaning "this rule is important". I meant :not(). which I would bet good money epage doesn't support :( | 14:33.43 |
| so your nonplaceholder thing sounds right probably, we'd have to be careful to only add it to final level groups. | 14:34.58 |
pedro_pc | can we fix it in the parsing, by putting a more specific selector on the slide placeholders? | 14:35.16 |
jogux | hits cmd-w with the wrong window focussed, again. | 14:35.35 |
Robin_Watts | jogux: While you were gone, pete said: can we fix it in the parsing, by putting a more specific selector on the slide placeholders? | 14:36.41 |
| And we *could* solve it by having all the placeholders (and uses of the placeholders) use "TxLevel3-ph" or something | 14:37.26 |
jogux | so change TxLevel-3 to ... yeah. | 14:37.30 |
Robin_Watts | but I question whether that's neater. | 14:37.36 |
jogux | does that break saving? | 14:37.36 |
| I'm not sure it's neater, but it sounds far less error prone. | 14:38.05 |
| or simpler to explain/understand at least. | 14:38.24 |
Robin_Watts | I think "not a placeholder" is fairly simple to understand. | 14:38.43 |
pedro_pc | wouldn't think so, as their styling depend on whether or not they are placeholders, so we're just making soem implict behaviour more explicit afaics | 14:38.51 |
Robin_Watts | and it maps very nicely onto the presence/absence of an <a:ph> tab. | 14:39.08 |
jogux | hm.. we already use -ph in some places? eg. Group, idx = 9 type TxBody inline:(shared)0004 styles id='slide2147483648-ph-body | 14:40.06 |
pedro_pc | notes that GS IRC log is now one of the top google hits for presentation.xml TxLevel discussions ;) | 14:41.38 |
jogux | I reckon the -ph suffix would give better performance probably. but otherwise I'm not sure I'm strongly tied to either way. | 14:46.11 |
| added extra tags to groups would [presumably] use more ram too. | 14:46.58 |
Robin_Watts | jogux, pedro_pc: So, the neatest solution to all this would be to use the :not thing, if epage supports it. | 15:03.02 |
| I wonder how hard that would be to add. | 15:03.22 |
| Failing that, the next neatest, we think is to use TxLevel-1-ph | 15:03.44 |
| That requires extra work as we create the Edr (as we need to carry the knowledge of placeholder or not down a bit further in the parsing) | 15:04.24 |
jogux | I suspect :not is hard to add. but I can't get my head around what would be necessary. | 15:09.01 |
Robin_Watts | presumably, we have an Edr_doesThisStyleMatch function or something. | 15:09.50 |
jogux | it's sweet that you think CSS style selector logic fits in a function :-) | 15:10.40 |
Robin_Watts | chrisl: if you get sucked into a conference call, I recommenedhttp://www.telediscount.co.uk. 1p a minute to the states. | 15:10.40 |
chrisl | Robin_Watts: they usually call me - but I'm hoping to put them off. It would be a waste of time, really, at this stage | 15:11.20 |
Robin_Watts | stupid crashing MSVC. | 15:12.43 |
mattchz | interestingâ¦so reflow is handled using a WebView? | 15:14.16 |
Robin_Watts | Yes. | 15:14.21 |
| We convert to HTML. | 15:14.28 |
mattchz | ok, nice. that makes my life easier. | 15:14.38 |
pedro_pc | neat | 15:14.43 |
chrisl | I find the fetish for conference calls a bit annoying, anyway | 15:14.51 |
Robin_Watts | and then use a webview to display that, with some krufty stuff to resize fonts. | 15:14.57 |
mattchz | :-) | 15:15.06 |
Robin_Watts | Jogu: Edr_StyleRule_matchSelector :) | 15:15.22 |
henrys | chrisl: yeah if you can avoid the conference call that would be good. Best to have a written record of stuff for a lot of reasons. | 15:16.20 |
chrisl | henrys: when I do end up with no option, I *always* write a mail afterwards with a summary of my understanding of what was discussed - been burned that way before! | 15:17.15 |
| This is more that, until I have enough of a frame of reference, it's pretty hard to really discuss things, especially on the phone | 15:18.21 |
jogux | robin_watts: I don't think that does it? Though I don't understand what that does :-) | 15:19.21 |
| * Searches the rule for the given selector. Returns false if no match | 15:19.32 |
| * is found, or the specificity of the rule doesn't match. | 15:19.32 |
Robin_Watts | jogux: Me either. I was just wondering what the hell specificity was. | 15:19.46 |
jogux | it's a css thing iirc | 15:19.54 |
Robin_Watts | I'm also pondering if :not(x) is really what we want. | 15:19.58 |
jogux | the function name is on the tip of my tongue; it's something like Edr_StyleContext_apply. | 15:20.54 |
| Edr_Style_Context_create. that's the thing that does all the matching of selectors etc. | 15:21.59 |
Robin_Watts | jogux: hell if I can see how :( | 15:26.23 |
jogux | I know enough about it to not admit that I know any more than that. | 15:26.54 |
Robin_Watts | I'm going to hate myself for abandoning this way of working before I know it can't work, but... let's look at doing it the -ph way. | 15:28.36 |
jogux | robin_watts: the guts is in applySpecificityHelper I think. | 15:28.38 |
| or maybe not | 15:29.37 |
Robin_Watts | That function is all greek to me. | 15:30.18 |
chrisl | Okay, note to self: when using memento to track down memory leaks, remember to rebuild the *memento* executable in order to recheck leaks...... | 15:31.45 |
| kens: I can't believe how many people seem to have been using psmono (psgray I vaguely get, but psmono......?) | 15:33.49 |
kens | chrisl I agree, I've no clue why anyone thought that was a good idea and I've no intention of supporting it | 15:34.18 |
mvrhel_laptop | morning | 15:41.27 |
kens | Hi mvrhel_laptop | 15:41.35 |
mvrhel_laptop | hi kens | 15:41.38 |
mattchz | paul/robin: hmm. I was planning on retaining the bitmaps (both the shared HQ and the page ones), and reconfiguring them. | 15:43.26 |
| on rotation. | 15:43.31 |
| But now, Iâm not sure thatâs such a good idea, as they may be in use by an asynctask? | 15:43.43 |
mvrhel_laptop | kens: so one minor issue with the v2 stuff | 15:44.04 |
kens | ? | 15:44.10 |
mvrhel_laptop | you will need to have access to the imager or graphic state | 15:44.21 |
kens | I think that's not likely to be a problem | 15:44.32 |
Robin_Watts | mattchz: Possibly. Paul is the guy that knows this stuff. | 15:44.41 |
kens | I think I need it whenever I mess with colour | 15:44.41 |
mvrhel_laptop | ok good | 15:45.12 |
| this is due to the fact that we will be using the ICC profile cache | 15:45.29 |
kens | To be honest its something pdfwrite passes around a *lot* | 15:45.33 |
mvrhel_laptop | great | 15:45.37 |
mattchz | Robin_Watts: ah, right, ta. I think heâs afk for now? | 15:46.08 |
paulgardiner | mattchz: My guess would be that a reconfigure would be pretty harmless to any background tasks (famous last words) | 15:46.40 |
Robin_Watts | paulgardiner: Eh? | 15:46.52 |
mattchz | presumably it would be bad if another asynctask ended up also writing to the background task | 15:47.06 |
Robin_Watts | Suppose you have a background task rendering into the bitmaps... | 15:47.07 |
mattchz | s/background task/bitmap/ | 15:47.16 |
Robin_Watts | On a rotation, the bitmaps have to change shape, right? | 15:47.41 |
| from XxY to YxX ? | 15:47.47 |
mattchz | yes. | 15:47.51 |
Robin_Watts | Can we 'reconfigure' a bitmap like that? Surely you have to free/recreate ? | 15:48.07 |
mattchz | http://developer.android.com/reference/android/graphics/Bitmap.html#reconfigure%28int,%20int,%20android.graphics.Bitmap.Config%29 | 15:48.27 |
paulgardiner | I assumed that is what mattchz meant by reconfigure | 15:48.34 |
| ... same memory different aspect ratio | 15:48.50 |
Robin_Watts | right. | 15:48.56 |
mattchz | yeah. Iâm not sure how that would work with stride | 15:49.00 |
Robin_Watts | Wasn't aware that was around, and yes, stride. | 15:49.12 |
mattchz | but, two threads writing to the bitmap would be bad anyway - corruption | 15:49.27 |
paulgardiner | Ooo! API Level 19. That will lose us some devices | 15:49.39 |
mattchz | oh, bah. | 15:49.47 |
| I hadnât noticed that either. | 15:49.53 |
| :( | 15:49.55 |
paulgardiner | mattchz: I think it's arranged to perform the rendering always on the same thread | 15:50.06 |
mattchz | actually, in some Android versions, AsyncTasks all run on the same thread. | 15:50.28 |
paulgardiner | I have recollection of actually setting parameters to assure it | 15:50.55 |
jogux | refrains from comment about android fragmentation. cos other wise I'd say something like "you mean the compatibility library doesn't solve this?". oops. | 15:50.59 |
paulgardiner | ensure (something like that) | 15:51.07 |
mattchz | jogux> yeah, it sucks. | 15:51.51 |
| then again, you shouldnât make assumptions about how the API works anyway. | 15:52.12 |
jogux | it was more the reconfigure thing that triggered me to get snidey tbh :) | 15:52.31 |
paulgardiner | Perhaps we should add the .get calls anyway and then not have to worry about strange interactions between different async tasks | 15:52.33 |
mattchz | whatâs wrong with the reconfigure? | 15:52.45 |
| get calls? | 15:52.57 |
jogux | matt: you can't use it because too many devices are on old crap versions of android :-) | 15:53.07 |
paulgardiner | mattchz: I think we include the source for a particular version of async task | 15:53.20 |
mattchz | jogu> thatâs true. Then again, Apple âsolveâ this problem by just not supporting old hardware at all. | 15:53.41 |
paulgardiner | and I think in any case, I set some parameters somewhere to say what thread it ran on | 15:53.44 |
mattchz | paul> oh, right | 15:54.01 |
| yeah. | 15:54.54 |
| " * <p>When first introduced, AsyncTasks were executed serially on a single background | 15:54.55 |
| * thread. Starting with {@link android.os.Build.VERSION_CODES#DONUT}, this was changed | 15:54.55 |
| * to a pool of threads allowing multiple tasks to operate in parallel. Starting with | 15:54.57 |
| * {@link android.os.Build.VERSION_CODES#HONEYCOMB}, tasks are executed on a single | 15:54.58 |
| * thread to avoid common application errors caused by parallel execution.</p>" | 15:54.58 |
jogux | so. SO. they enabled alien_threads as the internal (soft) threads were crashing on ios6. I'm fairly certain the reason it's crashing it because it's not actually initialising the semaphore it uses. But I'm tempted to just delete all the code for soft thread support on iOS. [this came up because xcode6 threw a deprecated warning for the code.] | 15:55.04 |
mattchz | paul> ok, so perhaps the only solution is to only try reconfiguring the bitmap on API 19 devices | 15:56.36 |
| which kinda defeats the point, as itâs likely the older devices that have less memory and thus trigger this problem :( | 15:56.53 |
Robin_Watts | So the underlying problem here is that when we rotate, we can sometimes fail to allocate the new bitmaps? | 15:57.24 |
mattchz | Looks like it from the stacktrace; I havenât managed to reproduce it myself | 15:57.38 |
| We can catch the exception. | 15:57.50 |
Robin_Watts | Is it possibly just that the old bitmaps are still being held onto, and so we can't spare the memory? | 15:58.03 |
| perhaps by a currently running async task? | 15:58.15 |
paulgardiner | Maybe on old devices a recycle call is needed | 15:58.21 |
mattchz | itâs possibly that, or possibly the fact that on old OSâs the recycle call is asynchronous | 15:58.32 |
Robin_Watts | hence if we just waited a bit and retried we might be OK ? | 15:58.37 |
mattchz | itâs possible it would work. | 15:58.50 |
paulgardiner | So we already call recycle? | 15:59.03 |
mattchz | nope, not AFAIK | 15:59.17 |
paulgardiner | Calling .get on all asynctasks when we close down is sounding more and more sensible | 15:59.30 |
mattchz | How long can these tasks run? We ideally donât want to block the UI threadby calling them during a rotation. | 15:59.51 |
paulgardiner | The reader has a method for running a function on each view | 15:59.52 |
| ReaderView I mean | 16:00.07 |
Robin_Watts | We have a mechanism within MuPDF for killing renders that are taking too long (the "cookie") | 16:00.32 |
mattchz | Is that like a pal_thread_shutdown? | 16:01.23 |
| i.e. flag? | 16:01.34 |
Robin_Watts | mattchz: Kinda. | 16:01.42 |
| When we kick off a render run, we can pass in a pointer to an fz_cookie. | 16:02.06 |
| That's a structure with various fields in. | 16:02.12 |
| One of those fields is a "cancel" flag, and the render checks that flag occasionally. | 16:02.31 |
| So if the caller sets that flag, the render exits fairly quickly. | 16:03.14 |
| I think we must use that to cope with cancelling/restarting HQ renders. | 16:03.50 |
mattchz | ah, right. | 16:05.19 |
| I wonder if this bitmap reconfigure thing is worth doing anyway for devices that support it, as itâll reduce churn | 16:05.40 |
Robin_Watts | sounds plausible. | 16:06.14 |
mattchz | Iâd say itâs probably not worthwhile, other than the fact Iâve already implemented some of it :) | 16:06.31 |
Robin_Watts | AIUI, in order to make it so you can call that function on the platform where it exists and not have it cause errors on other ones, you need to wrap it in a couple of layers of classes, right? | 16:07.53 |
mattchz | I think you can just use an if (SDK_INT > 19) type thing | 16:08.20 |
| if itâs a new class you have to do the wrapping thing, I think. | 16:08.28 |
Robin_Watts | mattchz: The problem, AIUI, is that when the class is loaded, it resolves all the functions it calls. | 16:09.06 |
mattchz | yeah, we do that already | 16:09.14 |
| (see copySelection in MuPDFPageView.java) | 16:09.27 |
Robin_Watts | ok. | 16:09.29 |
mattchz | (I was looking at that earlier, as I had to add a compiler annotation to stop Eclipse from complaining) | 16:09.48 |
Robin_Watts | I just had this memory of having to do something horrible before. | 16:09.49 |
mattchz | Yeah, Iâve done that in the past, and itâs horrid | 16:10.09 |
paulgardiner | I remember looking at the cancel flag and thinking it would be very difficult to use in the Android app. Can't remember the details now, but something to do with the threading and not being sure which render was being told to stop | 16:15.25 |
Robin_Watts | paulgardiner: Well, you'd need a cookie per async task, and a way of getting to them... | 16:16.54 |
| With the .get that might be possible now? | 16:17.01 |
mattchz | The get() is called on the asynctask itself to get its result. Itâs like join() | 16:18.05 |
| but thereâs nothing to stop us keeping a list of outstanding AsyncTasks | 16:18.22 |
paulgardiner | I think every AsyncTask is already held in a member of some class or other. The rendering ones are in PageView I think | 16:19.21 |
| So sending a message to all PageViews could do it | 16:19.35 |
| And ReaderView knows all the current PageViews | 16:20.03 |
mattchz | We possibly can do it when we reuse the PageView | 16:20.16 |
| i.e. the code Iâve got so far preserves the adapter over a rotate | 16:20.36 |
| and then the adapterâs code to reuse a pageview will do the bitmap reconfiguration. It could also stop the asynctask and create a new bitmap on older Androids | 16:21.42 |
| hmm. no. we need to stop all the asynctasks first, because they use a shared HQ bitmap | 16:23.42 |
| I think? | 16:23.53 |
paulgardiner | Maybe the adapter could tell the pageviews to reconfigure when it is handling one out to ReaderView and the pageviews reconfigure method could first stop the async tasks | 16:46.05 |
| I may be misremembering some of how it works though | 16:46.23 |
mattchz | I think thatâs what I was saying, but then I realised we had to stop all the asynctasks in advance I think, because they share a HQ bitmap? | 16:46.53 |
| possibly. | 16:47.06 |
Robin_Watts | I thought the Async tasks were either drawing the fuzzy or drawing the hq. | 16:49.44 |
paulgardiner | There should be only one pageview using the hq bitmap and hence only one async task accessing it at any one time, although the current code might not be doing a great job of ensuring that | 16:49.45 |
Robin_Watts | as such the async tasks should only have 1 bitmap. What paul said. | 16:50.16 |
jogux | robin_watts: you're going to be okay with me replacing one generated file in the source tree with a much less evil generated file in the source tree, right? :-) | 16:54.26 |
Robin_Watts | jogux: Urm... probably. You make it sound like I shouldn't be ? | 16:54.53 |
jogux | I thought it was you that generally complained about generated things within the source tree? | 16:55.08 |
paulgardiner | Hmmm! We probably have to be very careful where we call AsyncTask.get because we'll stall the UI... well, unless we can get the cancel flag working whereupon it would return very quickly | 16:55.15 |
Robin_Watts | oh, right, yes. | 16:55.18 |
| But changing one for another seems reasonable :) | 16:55.34 |
jogux | great, ta :-) | 16:55.41 |
mattchz | paul> yeah - that was what I was thinking earlier when I was talking about blocking the main ui thread | 16:55.45 |
jogux | [I did try and think of a non-generating into source tree solution, but they all seem far worse and don't fix the issue I'm trying to solve] | 16:56.10 |
mattchz | so much for not worrying about locks and threads, hehe ;) | 16:56.36 |
paulgardiner | mattchz: and if .get was safe to call from the UI thread, it might make sense to call it from the already existing method of PageView that sort of shuts it down (I think there is such a method). | 16:57.00 |
kens | OK off now, night all | 16:57.13 |
mattchz | yeah - releaseResources() :) | 16:57.15 |
mattchz | is slightly confused now, as my page views donât seem to be getting reused on rotation anyway. | 16:57.40 |
| oh, the cache of views is in the ReaderView, not in the adaptor (and itâs the adapter Iâm preserving on rotation). | 16:58.46 |
| ARRGH! | 16:58.48 |
| ok, so this isnât going to work, I guess. | 17:00.51 |
paulgardiner_ | Maybe a seperate bitmap store class would make sense, which everything else uses to obtain bitmaps. | 17:05.06 |
Robin_Watts | jogux, pedro_pc: This code has lots of logic in it for "get the txLevel I am at" etc. | 17:05.34 |
mattchz | paul> I wondered that, but wasnât sure how decide when to evict them. | 17:05.55 |
Robin_Watts | all of which gets messed up by me adding TxLevel-1-ph etc. | 17:06.01 |
tpw_rules | i'm trying to make ghostscript go faster converting pdfs to postscript. this is for a limited print server and a pdf with one image and one line of text takes several minutes to convert | 17:06.14 |
jogux | robin_watts: darn :( | 17:06.21 |
| robin_watts: does it get messed up less by the other ideas? | 17:06.31 |
Robin_Watts | Rather than forcing myself to redo all this, I am tempted to try the 3rd option, that of having a 'NotAPlaceholder' option. | 17:06.43 |
| I suspect that I actually need both "Placeholder" and "NotAPlaceholder" selectors. | 17:07.06 |
pedro_pc | ...or by a slightly grubby getTxLevel() which knows how to handle TxLevel and Txlevel-ph ? | 17:07.12 |
Robin_Watts | pedro_pc: I've been playing with that kinda thing for a while. | 17:07.36 |
| and it looks like it's not going to be a nicely self contained change. | 17:07.51 |
henrys | tpw_rules: if you think the test file is noticeably slower than say acrobat producing postscript report a bug at bugs.ghostscript.com | 17:07.55 |
pedro_pc | :( | 17:07.58 |
| the curse of epage... | 17:08.06 |
paulgardiner | mattchz: I wasn't thinking of it as a cache so much. Just preload it with the 4 bitmaps that are needed and make that the thing passed across during a rotate | 17:08.23 |
| Pageview already has a releaseBitmap method (although I'm not completey sure what it does). It could stop asynctasks and NULL the reference | 17:10.03 |
| the reference to the bitmap | 17:10.15 |
| It probably does that already | 17:10.22 |
mattchz | and thatâs called in onDestroy(), so should happen on rotation. | 17:10.44 |
jogux | does a little dance. You can now open the xcode project file that's in the epage source tree in xcode. and you can edit it in xcode! and commit your changes without having to fiddle with the file in a text editor! [or one of them, at least] | 17:15.17 |
mattchz | jogux> have you found a way to edit all of the epage source in xcode? | 17:16.03 |
| without building it as part of the alien? | 17:16.14 |
| something like that would be handy for mupdf. | 17:16.35 |
jogux | you can edit it no problem, albeit you have to manually open the file. | 17:16.42 |
mattchz | yeah; that doesnât help with searching the code base etc. | 17:16.56 |
jogux | the annoying thing (which I intend to prod at a little) is that you can't set breakpoints | 17:16.58 |
| mattchz: ah. hm. | 17:17.18 |
mattchz | for mupdf, iâm currently using a separate editor for the core | 17:17.20 |
jogux | mattchz: will you could drag in all the source files, but not add them to the target | 17:17.29 |
mattchz | and a third editor for andorid ;) | 17:17.32 |
jogux | I thought about doing that for epage, but there's far too many files. | 17:17.39 |
mattchz | jogux> yeah, I wondered about that. | 17:17.42 |
| yeah, and multiple implementations of the same file | 17:17.53 |
jogux | or, rather, it's far too difficult to figure out which files you do need. yeah. | 17:18.02 |
| Robin did some clever stuff in visual studio, though I don't know if that lets you search across the stuff in the FBS too. possibly due to VS's browse file things? | 17:18.46 |
Robin_Watts | jogux: It does. | 17:18.58 |
| Being able to search (and do 'goto definition') was the big motivator for me. | 17:19.24 |
| mattchz: MuPDF builds from a native VS solution. | 17:19.49 |
| But gs and epage do not. We have a solution for each that calls out to the underlying make build. | 17:20.10 |
mattchz | nod. | 17:20.36 |
Robin_Watts | We do however include all the files as entries in the solution so that we can search them. | 17:20.43 |
mattchz | I guess it wouldnât be that hard to add a native xcode solution for mupdf. | 17:20.48 |
| but more stuff to maintain | 17:20.58 |
Robin_Watts | I did have an xcode solution for either gs or mupdf that did the same thing. | 17:21.02 |
| I think it may have been gs. | 17:21.12 |
jogux | robin_watts : oo. excellent. that gives me hope it's possible and worth spending time on then. | 17:21.38 |
mattchz | bah. cmd+w mistake | 17:21.40 |
Robin_Watts | and I haven't kept it up to date with xcode updating every week. | 17:21.42 |
mattchz | nod | 17:21.56 |
Robin_Watts | I hate and despise xcode. | 17:22.12 |
pedro_pc | right, I'm off home. Catch you later | 17:22.12 |
mattchz | I think Iâm going to draw a class diagram. | 17:22.27 |
jogux | robin_watts: I mostly feel the same about VS | 17:22.31 |
| I suspect it's mostly down to familiarity. | 17:22.37 |
mattchz | I mostly feel the same about whatever IDE Iâve just switched to using ;) | 17:22.48 |
Robin_Watts | For years people have developed a language about what stuff means; configurations/building/deploying/testing. | 17:23.00 |
| And xcode just throws all that existing grammar out the window and does its own thing. | 17:23.19 |
mattchz | VS/eclipse/android studio are as bad | 17:23.41 |
Robin_Watts | I like VS. Can't comment on the rest. | 17:24.09 |
| Which is why I bought VisualGDB. | 17:24.25 |
mattchz | I mean, in terms of all having different config languages | 17:24.27 |
Robin_Watts | It means I can debug linux and/or android stuff from within VisualStudio. | 17:24.51 |
| mattchz: I don't mean the fact that they use something other than makefiles. | 17:25.27 |
mattchz | oh, you mean the defintion of stuff like âtargetâ etc | 17:26.17 |
Robin_Watts | exactly. | 17:26.22 |
mattchz | yeah, schemes/targets/configurations etc. confuse me | 17:27.39 |
| then again, Xcode was based on Project Builder for Next, so not sure which came first ;) | 17:28.47 |
Robin_Watts | jogux: Can a group have more than one selector on it? | 17:30.52 |
jogux | I think so. looked like there were some groups like that in your edr dump | 17:31.14 |
Robin_Watts | oh, hmm. Each group can only have one type though. | 17:31.45 |
jogux | I'm sure it can have multiple somethings going by the debug output | 17:32.06 |
| eg: Group, idx = 8 refcount = 1 type rect PlaceholderID='1' PlaceholderType='body' attr:(shared)0011 inline:(shared)0007 styles Shape id='2' manager=Drawing | 17:32.59 |
| the platholderid='1' is just a string I think, ditto placeholdertype | 17:33.10 |
| I'm just not sure what the terminology for them is | 17:33.16 |
mattchz | so, in summary, what do you think we should do? | 18:23.47 |
| presumably we should have a stab at stopping and waiting for the async tasks | 18:24.04 |
Robin_Watts | waits for the logs to catch up to see what I missed. | 18:24.18 |
mattchz | despite the risk of locking up the UI? | 18:24.20 |
| youâve not missed anything, I think | 18:24.37 |
Robin_Watts | I think that waiting for the async tasks to catch up on a rotation is not unreasonable. | 18:24.58 |
mattchz | and in other cases where we reuse the page view? | 18:25.12 |
Robin_Watts | If we can cancel tasks, so much the better. | 18:25.21 |
| what other cases do we reuse the page view? | 18:25.28 |
| Changing to/from reflow ? | 18:25.36 |
mattchz | when a page goes off screen, I think | 18:25.37 |
| we keep page n-1, n, and n+1, I believe | 18:25.55 |
Robin_Watts | We do. | 18:26.00 |
mattchz | and throw away everything else. | 18:26.02 |
Robin_Watts | We'd rather not flip a page and then cause a glitch in the ui. | 18:26.15 |
mattchz | mm | 18:26.23 |
Robin_Watts | If we can cancel async tasks, then that might not be too bad. | 18:26.48 |
| why do we need to wait when we flip a page? | 18:27.00 |
mattchz | at the moment we are cancelling() them. we just donât wait for them to finish. | 18:27.08 |
Robin_Watts | Surely the bitmap doesn't need reconfiguration in that case ? | 18:27.25 |
mattchz | ah, right. I was thinking about multiple tasks writing to the bitmap, but theyâre all serialised, arenât they. | 18:27.44 |
Robin_Watts | mattchz: We are cancelling them, but just not properly cancelling them? | 18:27.50 |
| i.e. we do AsyncTask.cancel, but that doesn't poke the cookie etc ? | 18:28.10 |
mattchz | we call cancel(), which is not guaranteed to work, nor does it wait for the cancellation to actually happen, nor are we poking the cookie (I think) | 18:28.24 |
| although Paul mentioned something abot problems with using cookies on Android | 18:28.47 |
paulgardiner | Just a quick thought. I'm not sure we need to stop Async tasks when we rotate, provided we ensure we don't display what's in the bitmap until we have performed the new render in the new orientation. | 18:31.34 |
Robin_Watts | On phones where the reconfigure is possible (and works), sure. | 18:32.04 |
mattchz | For other phones, we need to destroy the bitmap ASAP and recreate. | 18:32.17 |
| or we could wait until the render has finished, and do it then. | 18:32.27 |
Robin_Watts | On phones where we can't reconfigure and we throw away the bitmap and make a new one we have to stop the async task. | 18:32.30 |
paulgardiner | Oh. I see. Yes | 18:32.31 |
mattchz | (btw, API 19 is KitKat, which is the very latest version :() | 18:32.45 |
paulgardiner | I haven't been following the conversation | 18:32.45 |
| Right. | 18:32.55 |
mattchz | I guess we should forget about reconfiguration altogether | 18:33.31 |
Robin_Watts | mattchz: I think we should keep it in mind for future stuff, but at the moment, I'd guess we have to ensure we work well on all non kit-kat devices. | 18:34.20 |
mattchz | yep. | 18:34.27 |
Robin_Watts | i.e. if we come up with a solution for other devices that can be enhanced for kit-kat, then great | 18:34.40 |
mattchz | So, firstly, we should probably stop the async tasks properly, i.e. set the cookie, call cancel(), call get() | 18:34.52 |
Robin_Watts | mattchz: I would have thought that was something well worth looking at. | 18:35.10 |
| because presumably that'll help in normal use too? | 18:35.30 |
mattchz | yes. although itâs potentially going to cause glitches. | 18:35.41 |
paulgardiner | Agreed, although using the cookie may be hard. | 18:35.43 |
Robin_Watts | paulgardiner: Why? | 18:35.53 |
paulgardiner | Robin_Watts: I can't remember exactly. But I looked at it before and it seemed difficult to ensure you stopped the correct render. | 18:36.26 |
Robin_Watts | If we are keeping the AsyncTask handles around, then keeping a cookie per Async task around doesn't seem like it should be much harder. | 18:36.30 |
| As long as we only use each cookie for one async task there should be no confusion. | 18:36.57 |
paulgardiner | Maybe I didn't have them serialised at the time - or maybe I was entirely mistaken. | 18:37.06 |
Robin_Watts | If we can queue multiple async tasks for an HQ redraw or something, then it's a harder job, but the point of this is that we'd only have one HQ redraw async task outstanding, right? | 18:37.56 |
| I think I have PH and NPH tags going in to my pptx Edr correctly. Woo Hoo! | 18:38.39 |
mattchz | Iâve no idea what that means, but well done :) | 18:38.52 |
paulgardiner | We do have multiple outstanding async tasks: the pages are independent. | 18:41.13 |
| But maybe it's okay because we have them all on a single thread. | 18:41.30 |
Robin_Watts | paulgardiner: I mean that if we can cancel them now, we should end up with a maximum of 4, right? | 18:41.58 |
| fuzzy for n-1, n, n+1 and hq for n | 18:42.27 |
| or maybe not even that many. | 18:42.33 |
paulgardiner | Yes. I believe we already call cancel. We just don't use the cookie or wait | 18:43.12 |
| Multiple cookies? Maybe that does it anyway. I thought I remembered its being a single global flag. | 18:44.31 |
| Anyway, I'm sure mattchz can suss it out. I have to go. | 18:44.56 |
mattchz | np, thanks for your help! | 18:45.10 |
| Iâm heading soon, too. | 18:45.22 |
Robin_Watts | paulgardiner: How can it be a single global? | 18:47.02 |
| Maybe that's the problem :) | 18:47.09 |
Robin_Watts | is being called for food too in a mo. | 18:47.29 |
mattchz | np, can discuss it tomorrow, if youâre not fed up of my stupid questions yet ;0 | 18:48.00 |
| presumably itâs the cookie passed to fz_run_display_list() i want to frob? | 18:51.37 |
| (itâs NULL currently) | 18:51.40 |
| ah, itâs passed to a few methods. | 18:53.35 |
| I think I can see what I need to do anyway, thanks | 18:55.30 |
| gânight all | 18:57.23 |
| Forward 1 day (to 2014/06/19)>>> | |