IRC Logs

Log of #ghostscript at irc.freenode.net.

Search:
 <<<Back 1 day (to 2013/10/17)2013/10/18 
ray_laptop marcosw: Might be this: http://www.turnkeylinux.org/forum/support/20120308/upgrade-rsa-key-changed-and-ssh-issue Also see: https://forums.aws.amazon.com/thread.jspa?threadID=25149#00:04.44 
  As long as we don't reboot, we're probably OK :-)00:05.45 
  I think I found the resolution dependent issue with bug 694714. The clip path outer box was 1 pixel past the dev->height00:07.29 
marcosw the reboot didn't change the host keys this time.00:29.32 
  something is still terribly wrong with casper. I'm going to take it down and see what's up.00:39.22 
ray_laptop marcosw: I saw your email. Bummer. I see that you have a gs regression creeping along. Does this mean that I shouldn't try a regression run ?04:12.46 
  well, I guess all it might do is abort. Going to give it a try...04:21.49 
  marcosw: did you do something that killed peeves as a regression machine ? peeved is up and they are both on the same subnet in my office. peeves itself is up and healthy. Did the clusterpull die on some machines04:33.17 
  strange. I watch peeves running and see the clusterpull.sh run occasionally, but the touch of machine.up isn't working -- the time is locked at 4:46 even though I see it running.05:06.17 
  ahh... somehow the known_hosts on peeves in ~marcos/.ssh got updated. When I manually ran the "touch up" ssh line from clusterpull (as marcos) it prompted me to allow the host key to be updated.05:11.40 
  then it worked and the time on casper for peeves.up looks OK.05:12.16 
  marcosw: the other machines that are marked "DOWN" may have a similar problem.05:13.23 
  time to get ready for bed05:14.49 
kens For the logs, one for the MuPDF developers07:21.13 
  http://stackoverflow.com/questions/19429465/disable-jdvu-compiling-mupdf07:21.13 
sebras-work kens: ehm.. but mupdf doesn't support djvu..?07:58.46 
  kens: my guestt is that he's using https://code.google.com/p/ebookdroid/07:59.39 
  guess...07:59.43 
kens sebras-work : I wasn't sure about the DjVu comment, I certainly know MuPDF doesn't support it.08:01.06 
  I was thinking more of the 'compiling the JNI' stuff08:01.26 
sebras-work kens: it seems as if he wants to disable djvu and thereby reduce the size of the .so-files in the .apk. so this makes me think that he's using ebookdroid (which combines djvu with mupdf) rather than our git repo for compiling.08:07.08 
  our... your! :)08:07.15 
kens Hmm, well that's possible certainly08:13.01 
  Still probably best if someone other than me replies to him :-)08:13.13 
sebras-work kens: and I have no account over at SO08:29.07 
kens sebras-work : tor Robin_Watts and paul all do08:29.23 
sebras-work ...because then I feel compelled to answer. ;)08:29.33 
Robin_Watts morning08:40.10 
kens morning Robin_Watts08:40.24 
Robin_Watts I will have a look at the stackoverflow question.08:40.38 
kens Thanks08:40.44 
Robin_Watts bugger. I've forgotten my stackoverflow login details :(08:47.15 
kens I can post an answer for you if you want08:47.36 
  I must do something about my login too, now my credentials are going to be unsupported08:48.41 
Robin_Watts tries to remember how the clist calculates the bandheight it uses.13:12.55 
  I think it does something clever by taking the total size available to it and dividing it up by the number of threads it's using or something.13:13.25 
  With this process_page stuff, if we need additional buffering per band, that should be allowed for in that calculation too, I think.13:14.17 
  but the buffering may itself depend on the bandheight, so it's not trivial :(13:14.41 
ray_laptop Robin_Watts: I had considered incorporating num_rendering_threads_requested to make sure there are enough bands, but it doesn't currently. The band_height is set in clist_init_data. If not fixed is uses what is returned from gdev_mem_max_height 14:25.04 
Robin_Watts ray_laptop: Ah, morning.14:25.25 
ray_laptop good mornng, Robin_Watts (and everyone else)14:25.51 
Robin_Watts I'd decided to ignore the process_page stuff in the band height calculations.14:26.01 
  as 1) it's too complex, and 2) such buffer calculations are not included when being done in the device currently.14:26.33 
ray_laptop Robin_Watts: you mean the business of setting the band to a helpful number of lines ?14:27.07 
Robin_Watts ray_laptop: I mean the allocation of any per thread buffers that process_fn may need.14:27.41 
  For instance, with the 'fastpng' device I am doing here, I am doing the zlib compression on the threads.14:28.18 
  which means each thread needs an output buffer.14:28.31 
ray_laptop right14:28.43 
Robin_Watts In an ideal world, we might try to allocate that out of maxBitmap too.14:29.04 
  but I think that's just too much work.14:29.11 
ray_laptop agreed14:29.20 
  It is mentioned that multiple threads will *each* consume memory, including the buffer, so also having a destination buffer per thread seems fine.14:38.50 
  multiple core processors usually go along with a fair amount of memory14:39.16 
henrys you can expense a standing desk … just sayin' http://www.bbc.co.uk/news/magazine-2453299614:56.41 
ray_laptop Robin_Watts: or anyone: Can you review the bug 694714 patch that's on my repo ? 15:08.51 
Robin_Watts looking now.15:09.00 
ray_laptop Robin_Watts: I mention you because marcos had assigned it to you until I snagged it.15:09.18 
Robin_Watts ray_laptop: Yeah, looks like a sane change to me.15:10.07 
ray_laptop Robin_Watts: thanks. I looked at other cpath_outer_box uses and there are some others that I was going to "fix" similarly where the box doesn't get intersected with some other box15:10.49 
  But I wanted the bug fix to be a separate commit, first15:11.08 
Robin_Watts ok.15:11.14 
  ray_laptop: Random thing... in gxclimag.c line 97415:18.25 
  If we failed to allocate a block, free the block we just failed to allocate ?15:19.13 
ray_laptop Robin_Watts: yeah, superfluous, but harmless since freeing a pointer that is NULL is a no-op (and relied on many places).15:22.33 
Robin_Watts ray_laptop: Right. I was just wondering if it was maybe supposed to be freeing something else?15:22.59 
ray_laptop Robin_Watts: it probably was supposed to free the 'pie'15:23.13 
Robin_Watts i.e. often you see: allocate_a; if (failed) return; allocate(b); if (failed) {free(a); return;}15:23.31 
  right.15:23.36 
ray_laptop allocated at line 67315:23.38 
Robin_Watts That would make sense.15:24.23 
ray_laptop If it does free pie, then it should probably set *pinfo = NULL as well to avoid having a pointer to freed memory laying around, even though with an error return, that shouldn't be used.15:24.51 
  I have to run get coffee. bbiab (5 min)15:25.28 
  Robin_Watts: since you found it, do you want to go ahead and fix it, or should I ?15:34.01 
Robin_Watts ray_laptop: I have a fix here. I'll stick it on my repo for you to review later, and I'll test it on the cluster with the process_page stuff.15:34.33 
ray_laptop Robin_Watts: OK. Please set the *pinfo as well, then.15:35.02 
Robin_Watts ray_laptop: Have done.15:35.09 
ray_laptop great, thanks15:35.15 
Robin_Watts I also added *pinfo = NULL to the bottom (error case) exit from the function.15:35.27 
ray_laptop Robin_Watts: do you mean the "use_default:" area ?15:37.08 
Robin_Watts yes.,15:37.19 
ray_laptop if so, then I agree, but gx_default_begin_typed_image will set it to something else anyway15:37.48 
  but as a style, I prefer doing it as you suggest15:38.23 
  suggest / have done15:38.35 
henrys chrisl:about the color index gx_device type is broken into everywhere. You know I think we are too quick to blame Peter for some of our problems - he intended the device structure to be opaque, everybody "breaks" into it and then we blame him for bugs for peculiar interactions in the code.15:44.24 
  s/for bugs for/for bugs and15:45.45 
sebras-hotel http://bugs.ghostscript.com/show_bug.cgi?id=693228 -- who is Michael..?!15:47.19 
  a new contributor it seems, but unknown to me. :)15:49.38 
  unfortunately I can't test his patch until I'm back in .se in November, so if someone feels like doing the test then feel free.15:50.08 
Robin_Watts Michael = Micha`15:50.41 
Gigs- ray_laptop: thanks so much for fixing that segfault quickly... I'll deploy today probably15:53.28 
sebras-hotel Robin_Watts: oh.16:00.38 
ray_laptop Gigs-: since it also happened on windows, it was easy to work on. I also have linux, but the tools aren't quite as nice (usually)16:02.22 
  henrys: I'm not sure that LPD wanted the gx_device to be opaque, but I agree that places that assume a a gx_device * is "really" a gx_device_some_other_dev * is a problem and not supposed to be done outside of procs that device has16:05.29 
  sorry about the *'s causing shouting (chatzilla shows it as bold)16:05.59 
henrys ray_laptop:he always used an incomplete type when he wanted that - certainly the languages should not be accessing the fields in gx_device directly.16:09.14 
ray_laptop henrys: for the parser layers, probably so. I was thinking the device type.16:12.14 
  generally he'd provide a get_ or set_ fn in the graphics lib for the parsers to use. I was thinking about inside the graphics lib16:13.10 
  oops. I have to run. bbiab16:14.41 
Robin_Watts paulgardiner: How's .it ?16:15.56 
paulgardiner Lovely hotel with great views. Should have heeded your advice on italian taxi drivers though16:17.13 
Robin_Watts oh. expensive?16:17.26 
chrisl henrys: sorry, was on the phone. The best I can suggest is to create a bug, and we'll pass it round so everyone can review areas of the code for which they are responsible. Although personally, I don't think it's such a big deal......16:18.51 
paulgardiner After turning down the 120euro direct trip to sorrento, and requesting the 4euro one to the local train station, driver absolutely assured us we were too late for the train to sorrento.16:19.44 
Robin_Watts To which the answer is "just take me to the &*%$! station, guiseppe"16:20.46 
paulgardiner Yeah, if you are sure that the claim is untrue.16:21.35 
  Mind you, the taxi trip was quite an experience. It will be a lasting memory, so worth something for that alone. :-)16:23.32 
henrys chrisl I think it is too widespread to be dealt with safely16:26.02 
Robin_Watts henrys: The device interface in gs is absolutely not intended to be a private one.16:26.58 
  It's designed for public consumption - how else are people supposed to write devices?16:27.29 
henrys I think you are confusing opaque types and privacy. I want a routine to access the resolution of the device, not ores = dev->Resolution[0]16:28.35 
Robin_Watts You want an accessor function, in other words.16:29.14 
henrys I don't need to know how the resolution is stored.16:29.15 
Robin_Watts and yes, I'd concur that that is a nicer scheme. However in the C world that means a function call on every access (or more wonderful macros!).16:29.59 
  So I can understand why that isn't used in all cases.16:30.18 
chrisl It's often the problem with doing these things "properly" that APIs don't get redesigned every time the data structure changes - 'cause that's time and effort which often isn't available16:34.10 
  And I really don't nested accessor functions, where you end up with things like: gs_device_x_resolution(gs_device_resolution(gs_currentdevice(pgs)))16:41.41 
Robin_Watts zlib, how do I love thee, let me count the ways...16:43.44 
Gigs- one danger with that type of thing is that if it's more than just an accessor, it can hide serious performance sinks16:43.48 
ray_laptop henrys: there is a gs_deviceinitialmatrix and a gx_device_set_resolution but no gx_device_get_resolution. You could add one :-)16:47.44 
henrys the resolution is easily derived from initialmatrix16:48.57 
  I guess somebody could change it though...16:49.27 
ray_laptop henrys: right. There doesn't seem to be a call to get the current res16:50.25 
henrys ray_laptop: right16:51.14 
chrisl Presumably the original intention was that the resolution would only accessed via get_params()16:51.28 
ray_laptop chrisl: right, but that's a bit slow if needed with any frequency16:52.15 
chrisl ray_laptop: yes, the point I was making above is that APIs often get redesigned in the light of requirements outside the original design - usually due to resource constraints16:53.15 
  erm " APIs often don't get redesigned"16:53.36 
ray_laptop chrisl: well, the gs graphics lib "api" (calling it that is generous) never really got a design -- just an evolution16:54.13 
chrisl ray_laptop: henrys's point is we should be sticking to the graphics lib API16:55.03 
ray_laptop chrisl: as documented in lib.htm ?16:55.46 
chrisl Personally, I think it's almost inevitable that APIs suffer like this, unless you periodically take the hit of redesigning them.16:56.14 
  ray_laptop: I'd think "as would be documented in an up to date lib.htm"!16:56.53 
Robin_Watts chrisl: Yes. It's typical of software engineering that one lurches from crisis to crisis doing the short term fixes without having time to look back and say "well, actually, if we rework all of this slightly it'd be neater"16:58.02 
Gigs- I've found active resistance to refactoring in a lot of projects.16:59.08 
chrisl Robin_Watts: exactly, yes. And it's almost impossible to make a business case to spend a lot of effort redesigning something that apparently "works"16:59.24 
Gigs- "Well, thanks for the patch, but you touched like ... 10 files and it doesn't actually fix anything"16:59.24 
  the fear of refactoring is a downward spiral, because the code gets more and more fragile, and the reluctance to refactor increases17:01.17 
Robin_Watts I'd really like to see us undertake a major cleanup in gs at some stage - perhaps when going to v10. Remove all the historical crap from the device interface. static_procs, color mapping etc.17:04.50 
ray_laptop Gigs-: well, with our cluster regression testing, at least the fear of breaking something is greatly reduced17:07.06 
Gigs- and you have me running tiffsep on a massive number of files of mixed origin for you hehe17:07.37 
ray_laptop Gigs-: yes, thanks for that. It would be nice to have that done a bit before we release17:08.46 
  Gigs-: but anytime is better than not running it17:09.06 
Gigs- for a while I was running releases but for the last 8 months or so I've been mostly keeping up with git17:09.10 
ray_laptop Gigs-: awesome !17:09.23 
  hi, marcosw17:12.05 
  thanks for sorting out the cluster. Looks like it's running fine.17:12.22 
Robin_Watts ray_laptop: Woo Hoo! process_page is tigering.17:13.23 
  Both with and without NumRenderingThreads!17:14.07 
ray_laptop Robin_Watts: great. Is this with png flate in threads ?17:14.08 
Robin_Watts yes.17:14.13 
ray_laptop Robin_Watts: do you have a decent multi-core processor to try it on ?17:14.33 
Robin_Watts ray_laptop: Core 2 Quad17:14.50 
ray_laptop if not, peeves (if there isn't a regression running) wouldn't be bad. It's an i717:15.13 
  or peeved (dual Xeon Quad core)17:15.29 
  but a Core 2 Quad should be fine (that's the same as in i7, I think)17:16.27 
Robin_Watts I thought i7 had more cores?17:16.46 
ray_laptop An i7 has (AFAIK) 4 cores, each with hyperthreading so in theory, 8 threads work (mostly)17:17.29 
Robin_Watts Just about to try some timings - waiting for a release build.17:18.04 
  OK, so 600dpi with png16m is 3.3s or so to give a 493k file.17:19.54 
  fpng with no threading at 600dpi is 1.9s17:20.33 
  for a 523k file.17:20.51 
  2 threads = 1.3s17:21.34 
  for the same 523k file.17:21.48 
  3 threads = 0.88s17:22.11 
ray_laptop Robin_Watts: what is fpng ?17:22.27 
Robin_Watts 4 threads = 0.77s17:22.38 
  fpng = my new png device that uses process_page, and doesn't touch libpng17:22.58 
  We can't drive libpng in the way we need, so I lifted the png producing code from mupdf.17:23.34 
ray_laptop Robin_Watts: fpng doesn't compress as well -- is it doing the predictor as well as the flate ?17:23.58 
Robin_Watts It is.17:24.08 
  It does the simple 'sub' predictor.17:24.15 
ray_laptop I thought paeth was usually used ?17:24.32 
Robin_Watts the flushing on each band hurts the compression.17:24.37 
  ray_laptop: Not in mupdf :)17:24.42 
ray_laptop Robin_Watts: what band size are you using? 17:25.10 
Robin_Watts -dMaxBitmap=1000017:25.24 
ray_laptop setting the BandHeight to 1/n of a page where n is NumRenderingThreads would be interesting17:25.40 
Robin_Watts -dBandHeight=something ?17:26.00 
ray_laptop Robin_Watts: yes17:26.42 
  The default is 30 bands17:26.54 
  -Z: on a debug build tells you17:27.11 
Robin_Watts OK, with a bandheight of 1755 (so 4 bands)...17:29.02 
ray_laptop even cutting down to 8 or 12 or 16 bands would probably help the compression. -dBandHeight=825 -dBandHeight=550 -dBandHeight=41317:29.07 
Robin_Watts 0.917s17:29.23 
ray_laptop Robin_Watts: why 1755 ? 6600 / 4 = 165017:29.46 
Robin_Watts Tiger is 4958x7017 at 600dpi17:30.12 
ray_laptop you must be defaulting to a417:30.24 
Robin_Watts I'd hope so :)17:30.28 
  That gives a 520k tiger.17:31.06 
  but I think this proves that multithreading helps :)17:31.31 
ray_laptop how come you brits are so confused. You use inches and feet but 11.7 inch long paper (instead of 11 inch) ???17:31.37 
  Robin_Watts: I'm surprised that the performance with 4 bands is not as good as with 3017:32.08 
Robin_Watts ray_laptop: yeah.17:32.35 
ray_laptop and it seems like doing 30 'resets' of flate really doesn't hurt17:32.47 
Robin_Watts Let me put a patch up for you to 'ew!' at.17:32.53 
ray_laptop hurt the compression much17:32.57 
Robin_Watts The resets themselves cost <8 bytes.17:33.14 
ray_laptop Robin_Watts: I'll grab a fresh barf bag. Usually reserved for looking at customer's code ;-)17:33.23 
Robin_Watts but the fact that each block can't look back at the previous band for matches will hurt a bit.17:33.45 
  The paeth predictor involves looking up as well as left, right ?17:34.13 
  oh, the predictor is sent per line, so we'd be OK.17:34.36 
  ray_laptop: 3 commits on robin/master for your friday afternoon enjoyment :)17:39.44 
ray_laptop Robin_Watts: OK. Thanks.17:43.27 
  Robin_Watts: go ahead with the gxclimag.c change. No further review needed.17:44.55 
Robin_Watts I'll just do a quick clusterpush. Not that I've been bitten before by such changes or anything :)17:45.36 
ray_laptop Robin_Watts: Just the post commit clusterpush should be plenty for that one17:47.34 
Robin_Watts ray_laptop: I'd prefer to avoid the history containing "here's a stupid mistake" followed by "here's my fix for the stupid mistake".17:48.08 
ray_laptop Robin_Watts: true. That's why we do commit --amend on the master repo, isn't it ;-)17:48.47 
Robin_Watts :)17:49.03 
ray_laptop Robin_Watts: so, "options": The *_arg elements vs. The *arg in the various _fn calls. How do those relate ?17:58.52 
Robin_Watts In options you have blah_fn and blah_arg17:59.23 
ray_laptop right17:59.30 
Robin_Watts for 4 different values of blah :)17:59.31 
  The blah_arg is always supplied as the first argument to blah_fn17:59.46 
ray_laptop yes. but each blah_fn gets called with a void (* arg18:00.10 
ray_laptop didn't type fast enough18:00.24 
  So, how do the blah_arg values get set ?18:01.07 
Robin_Watts ray_laptop: The caller of process_page passes in dev and &options18:01.35 
  so the caller fills in all the functions and the args.18:01.54 
ray_laptop it seems that passing the gx_process_page_options_t *options struct would allow for that18:01.55 
Robin_Watts That doesn't play nicely with chaining.18:02.21 
  or as nicely.18:02.31 
  Suppose I want to add the downscaler into fpng.18:02.49 
  I'd call downscaler_process_page, and that would hook some of the fns18:03.30 
ray_laptop so that when, for example the init_buffer wants to allocate a struct that will be used by the process_fn, it puts it in the *buffer ?18:03.34 
  I'm thinking about the process "state"18:04.23 
  or is there no 'state' allowed between one buffer and the next ?18:04.59 
Robin_Watts init_buffer is called for each thread before the threads start up (or just once in the single threaded case). Each call returns a buffer.18:05.11 
  ray_laptop: What state could there be?18:05.33 
ray_laptop OK, and we don't allow state between buffers ever18:05.35 
Robin_Watts If you want to share state between the threads (I can't quite see what) then either you'd put that state in the device itself, or you'd put it in process_arg18:06.19 
ray_laptop Robin_Watts: OK.18:06.56 
Robin_Watts The point of the buffer stuff is that process_fn can work into those out of order, but they are delivered in order to output_fn18:07.08 
ray_laptop So I am fine with that patch, but I'd label is 'alpha -- subject to change' until we have a chance to maybe try a few other example implementations.18:08.50 
  just to make sure that we have the hooks we want, although it seems quite flexible18:09.21 
Robin_Watts ray_laptop: Sure.18:09.29 
  I'd like to try to push the downscaler into here, as (for the non error diffusion cases) that would benefit.18:10.24 
  In fact, even the error diffusion cases could have the downscale handled in the threads and the error diffusion done afterwards.18:10.57 
ray_laptop Robin_Watts: for example, you assume that if a process_fn wants a certain band height, the device will hook the get_space_params based on knowing what the process_fn wants (needs)18:11.52 
Robin_Watts Yes, I assume that.18:12.21 
ray_laptop Robin_Watts: I'm thinking about the downscaler, obviously18:12.31 
Robin_Watts AIUI, band height selection is done WAY before process_page is called.18:12.46 
ray_laptop Robin_Watts: yes, it's done before we begin writing the clist18:13.07 
Robin_Watts So the downscaler should probably provide some 'helper' functions the device can use to ensure it gets the right bandheight.18:13.41 
ray_laptop It does mean that the device has to "understand" any band size issues for any processing it's going to have done18:13.56 
Robin_Watts ray_laptop: Well, the process_fn *is* the device, so that's fair enough.18:15.18 
  If the device uses the downscaler, then it needs to understand the downscaler's needs too.18:15.37 
ray_laptop Robin_Watts: sorry. Had a phone call. Yes, I agree. The 'process' is an adjunct to a particular device.18:31.32 
  we are just providing the hook for the process to be done in our threads18:32.04 
  it's sounding good. *AND* it lets us steer cust 801 away from mods in gxclthrd.c18:32.50 
Robin_Watts ray_laptop: Indeed.18:33.09 
  ray_laptop: So, you either didn't notice, or you didn't object to the fpng device fiddling around the band device's memory :)18:34.01 
ray_laptop Robin_Watts: I notice you have the dev as gx_device * rather than gx_device_printer * or gx_device_clist * (which it MUST be)18:34.20 
  Robin_Watts: I haven't reviewed the 3rd (fpng) patch yet18:34.41 
Robin_Watts ray_laptop: I need to make process_page work with page mode stuff.18:34.44 
  it should work out easily enough.18:35.01 
ray_laptop Robin_Watts: well, it *is* still a gx_device_printer *18:35.09 
  isn't it ?18:35.18 
Robin_Watts ray_laptop: Is it?18:35.20 
  What requirement is there for it to be a printer?18:35.29 
ray_laptop Robin_Watts: well, ... OK.18:36.18 
  So this could be a "display" device ?18:36.43 
Robin_Watts I don't see why not.18:37.18 
  any device that you can 'get_bits' from should be fine with this.18:37.48 
ray_laptop Robin_Watts: Not sure when the "process_page" gets called in that case, however18:37.51 
Robin_Watts ray_laptop: How do display devices work then?18:38.26 
  They don't have a print_page entry I guess, but they must have something that says "get the bits now and display it"18:39.02 
ray_laptop Robin_Watts: hmm... where _does_ the device's process_page get called ?18:39.26 
Robin_Watts ray_laptop: For printers, in the printers "print_page" entry point.18:39.48 
  Old style devices call "get_bits" for each line and deal with that.18:40.00 
  New style devices call "process_page" and the data is fed to their process/output functions.18:40.23 
ray_laptop Robin_Watts: OK, so this is something that each device *must* call, and it's hooked via a dev_proc because the prn_device may have a page buffer _or_ a clist18:41.27 
Robin_Watts every device has to call *something* to get the data out.18:41.50 
ray_laptop each new device, that is18:41.51 
Robin_Watts either they can call get_bits etc, or they can call process_page18:42.08 
  yes.18:42.12 
  The default implementation of process_page will be to call get_bits and to feed that to process_fn etc.18:43.31 
ray_laptop Robin_Watts: when/why is the default implementation used ?18:49.25 
Robin_Watts ray_laptop: for page mode18:49.44 
ray_laptop Robin_Watts: so why not call get_bits_rectangle ?18:50.02 
Robin_Watts ray_laptop: yes, I mean get_bits_rectangle, sorry.18:50.27 
ray_laptop Robin_Watts: OK. np18:50.39 
Robin_Watts I appear to be incapable of coding paeth correctly.18:50.52 
ray_laptop Robin_Watts: steal, err... consult, libpng ;-)18:51.31 
Robin_Watts gs/debugbin/gswin32c.exe -dNumRenderingThreads=4 -o out.png -r600 -dBandHeight=1755 -sDEVICE=png16m gs/examples/tiger.eps18:51.58 
  ray_laptop: If you run that, do you get warnings about leaks?18:52.11 
  They don't look like leaks from my stuff.18:52.25 
ray_laptop tries that...18:53.03 
  Robin_Watts: yes, I see 3 objects leaked per thread18:53.15 
Robin_Watts me too. One of which is a gsiccmanage_linkcache18:53.36 
ray_laptop They are mvrhel's AFAIK -- one is that one18:53.42 
Robin_Watts Ok. Are they really leaked, or are they just warnings?18:54.12 
ray_laptop since they are sequence 20, 21 and 22, I assume they are all his18:54.16 
  Robin_Watts: not really leaked, since these are warnings from the chunk allocator when it closes.18:54.47 
Robin_Watts ok, so just noise then.18:55.07 
ray_laptop If the allocator is the normal GC allocator, then it picks those up18:55.12 
  If we are running with a chunk allocator (as with PCL), then it'll eventually collect them.18:55.42 
Robin_Watts threads always use the chunk allocator, right?18:56.03 
ray_laptop I am pretty sure that there is only one of these ordinarily18:56.16 
  Robin_Watts: yes, threads each have a chunk allocator so they don't need a mutex lock per alloc/free -- only when going to the underlying (thread safe) allocator to get/return chunks18:57.23 
Robin_Watts right, so these are fine regardless of pcl or not.18:57.46 
ray_laptop yes, as long as they aren't "per band" or "per page" things that leak (a debug PCL build with a multipage file and a banded device would tell us when PCL closed the allocator)18:59.22 
  going to lunch now. I'll look at the fpng patch next...19:01.52 
  Robin_Watts: ahh.. the fpng commit doesn't have any .c files19:03.28 
Robin_Watts ray_laptop: oops. Will fix that as soon as I get this working. sorry.19:03.44 
ray_laptop Robin_Watts: it's missing gdevfpng.c -- did you forget to git add it ?19:03.54 
Robin_Watts I did.19:03.59 
ray_laptop OK, since it's your latest commit, you can just --amend it19:04.27 
Robin_Watts ray_laptop: Right. Except I've broken the .c file in the meantime :)19:04.46 
ray_laptop oops.19:04.53 
Robin_Watts I'll try and have it working by the time you get back from lunch :)19:05.02 
ray_laptop I'll check the logs after lunch.19:05.11 
Robin_Watts ray_laptop: Fixed version pushed. PAETH still isn't working, but...19:15.14 
  ray_laptop: For the logs, new version with working paeth.20:12.04 
  ray_laptop: New version with working paeth up.21:19.19 
  And there is a new commit that adds a gxdso to do band height adjusting for your thoughts.21:19.37 
Micha` Howdy ghosteam.21:57.34 
  So, I'll definitely not use Ink annotations for my PDF handwrite annotator, but I'm a bit curious about a thing. Through a rather intricate process, the appearance stream of the Ink annotation is updated to mimick the InkList; this is, as I come to understand, a good thing. However, any curve goes through a rather deep bezier-recursion before being added to the appearance stream. At the end, each segment is itsel22:05.16 
  f stored in the stream as a very short bezier curve (using the `c` operator). Is there any reason to think that a PDF reader is so bad at drawing curve that curves need to be pre-bezier'ed for it?22:05.16 
Robin_Watts Micha`: No idea. Paul handled that stuff, and he's on holiday for a week.22:12.01 
Micha` Robin_Watts: Thanks. I'll ask him when he's back then, no rush.22:19.09 
Amr_ Hello, I have a question about MuPDF22:48.17 
  when I built the MuPDF for Android, it could search for Arabic words successfully using the "OpenFile()" as the Arabic pdf file stored on my local storage 22:50.05 
  but when I try to open a file online by buffering it and use the "OpenBuffer()" method the search doesn't work22:50.57 
  isn't search feature works with "OpenBuffer()" method or it's a bug in my code?22:51.41 
  Robin_Watts : did you receive my question?22:53.14 
Micha` Robin_Watts: Any opinion on http://bugs.ghostscript.com/show_bug.cgi?id=693719 ? Should MuPDF try to track a valid trailer if the one at the end points to an invalid /Root? (I'd dwell on this if there is a need to, just to get used to the library some more)23:03.37 
Robin_Watts Amr_: It should make no difference whether you use OpenBuffer or OpenFile.23:32.17 
  Micha`: I'd need to think about it, and I've not got my mupdf hat on at the moment.23:33.00 
Micha` No problem. Just let me know when you have thought this through, in the bug report maybe.23:35.03 
  A mupdf hat; sounds like virtual merchandising :-)23:35.40 
Robin_Watts I have a real Ghostscript hat.23:35.58 
Micha` Haha, awesome :-) Don't forget to put it on every time you work on gs then.23:36.56 
 Forward 1 day (to 2013/10/19)>>> 
ghostscript.com
Search: