|IRC Nick||Time (GMT-7)||Message|
anyone worked on Chrome (Mac) plugin?
|kalev||02:12||taxilian: up already? :)|
damn, i've been trying to make CAOpenGLLayer work in InvalidatedCA (Chrome and FF4.0), but no luck. None of funcitons in it is called (never calls can-draw, or draw-in-context or any other gl-related function)...
anyone has experienced this on Mac?
it works on Safari though, in CA.
if the only diff between CA and ICA is to call InvalidateWindow in ICA - and I do that in timer call - what am i doing wrong?
the rest of the code is the same as for CA.
or am i mistaken? anything else i need to change for ICA?
|taxilian||08:12||kalev: nah, I was still up and just checking to see if there was anything interesting going on right before bed =]|
|amackera||08:12||Is there a way to get git from complaining about src/3rdParty/boost ?
I guess I could add it to my .gitignore...
That might cause bad problems though
I've logged as Richard Bateman suggested
definitely a weird issue
|Silvio_||09:12||I'm strugling with it for almost a week|
|taxilian||09:12||particularly since looking at the link flags, it looks like libboost_system is there
say… are you running the prep script with -D USE_SYSTEM_BOOST=1?
|Silvio_||09:12||No I just ran ./prepmake.sh|
|taxilian||09:12||not sure why I didn't think of this sooner
if you are going to use system boost, you need that flag
otherwise it will use the firebreath internal boost
|Silvio_||09:12||ok, So I run ./prepmake.sh -D USE_SYSTEM_BOOST=1
|taxilian||09:12||not 100% certain, but I think ./prepmake.sh -DUSE_SYSTEM_BOOST
looking at the docs
and assuming that whomever put that there knew what they were talking about
|_neilg_||09:12||I think it needs to be -DUSE_SYSTEM_BOOST=1|
|Silvio_||09:12||Let me try it|
|taxilian||09:12||try both and let us know =]|
|_neilg_||09:12||From my own experience with CMake it seems to drop defines if you don't actually define a value
Which is why you need to use -DUSE_VERBOSE=1 where -DUSE_VERBOSE would make more sense... but just doesn't work
|Silvio_||09:12||It didn't work|
|taxilian||09:12||try deleting your build directory first|
|Silvio_||09:12||-DUSE_SYSTEM_BOOST gives an error|
|Silvio_||09:12||I did it
Parse error in command line argument: -DUSE_SYSTEM_BOOST Should be: VAR:type=value CMake Error: No cmake script provided. CMake Error: Problem processing arguments. Aborting.
|_neilg_||09:12||Yes, it needs to be -DUSE_SYSTEM_BOOST=1|
|Silvio_||09:12||-DUSE_SYSTEM_BOOST=1 didn't gave this error
but did not solve my issue
|_neilg_||09:12||So, you've deleted your build directory then you ran "./prepmake.sh -DUSE_SYSTEM_BOOST=1"?
Then went into your build directory and ran "make"?
with boost system
|taxilian||09:12||what version are you using?|
|Silvio_||09:12||Latest one 1.3.2a|
|taxilian||09:12||hmm. interesting. can you pastebin the full build log?|
|_neilg_||09:12||I would suggest looking at your CMakeLists.txt (or whichever file you're telling CMake to link against boost) and make sure that boost::system is listed before boost:filesystem|
|taxilian||09:12||is boost::system a dependency of boost::filesystem?|
|Silvio_||09:12||I just saw that the correct flag should be -DWITH_SYSTEM_BOOST and not -DUSE_SYSTEM_BOOST. I'll try it|
|_neilg_||09:12||The link order matters with GCC though most of my more recent experience is with Xcode and a combination of otool and ldd deals with the link orders for me... so I've managed to avoid it pretty much|
|Silvio_||09:12||I think it is|
|_neilg_||09:12||Oh, that's almost certainly it. I just opened up my build script and that's what I see too
taxilian: I think it is, yes
|taxilian||09:12||hmm. yeah, I agree, though; this really sounds like a link order issue|
|Silvio_||09:12||Ok, I'll try to change the order of boost libs too|
|taxilian||09:12||nitrogenycs: almost done converting streams to use shared_ptr everywhere...|
I have a question
|taxilian||09:12||congrats! I collect those
i'm building a project that depends on some libraries (*.lib) so i add them in: Win/projectDef.make
it gives me this error
when parsing string
Invalid escape sequence \.
|taxilian||09:12||cmake uses / for all paths|
|taxilian||09:12||even on windows|
|_neilg_||09:12||I was just typing that. Taxilian got there first. ;)|
|Taleb||09:12||Policy CMP0010 is not set: Bad variable reference syntax is an error. Run "cmake --help-policy CMP0010" for policy details. Use the cmake_policy command to set the policy and suppress this warning.
mmm, okay i will check again
|taxilian||09:12||huh. who'd'a thunk it? apparently infinite recursion causes an eventual crash… :-P (I must still be asleep)|
|Taleb||09:12||thanks, it works :)|
|taxilian||09:12||glad we could help|
now i build the project, and succeded
but i didn't find the msi file ? i already installed WIX and it's added to the VS 2010
what should i do else ?
|taxilian||09:12||the wixinstall project is added to the solution?
it would be named <pluginname>_WiXInstaller or something along those lines
|Taleb||09:12||where should i find this ?|
|taxilian||09:12||in visual studio
next to the other projects
if it isn't there, you probably haven't run the prep script again after installing WiX
or you might need to close and re-open your cmd prompt, since aparently some people have to use the WiX environment variables to find it (we're still investigating this)
|_neilg_||09:12||taxilian: In regards to your email about catching exceptions... I'd suggest some optional code that gets included by the prep scripts if somebody passed a define (such as "-DCATCH_EXCEPTIONS=1") which is off by default
I don't mean optional code, I mean optional define... Duh.
|Taleb||09:12||one minute, in visual studio, i did a search on _WiXInstaller and nothing found
in environment variables it is already exists
|_neilg_||09:12||At your command prompt if you type "set" and hit enter, does it appear there?|
WIX=C:\Program Files (x86)\Windows Installer XML v3.6\
|_neilg_||09:12||And you re-ran the prep script (after clearing out your build directory?_|
|Taleb||09:12||yes, prep2010.cmd projects mybuildex1|
|_neilg_||09:12||But you had deleted mybuildex1 before running that script? Sorry for asking; I just want to be sure|
|Taleb||09:12||yes it is a new folder
shoudl i do something regarding the script prep2010.cmd ?
|taxilian||09:12||you shouldn't need to; we seem to be having strange issues with the beta versions of WiX|
|Taleb||10:12||what WIX do you recommend to use ?|
|taxilian||10:12||I've had best success with the latest stable|
|Taleb||10:12||okay, i will check again and come back :)|
we definitely need to figure out what is causing these issues, though, and fix them
|taxilian||10:12||amackera: I found some really good information on how to support windowless plugins on IE
it's in a book, but I could probably photograph it and bring it
|taxilian||10:12||nitrogenycs: you around?
actually, _neilg_ you might be able to help me as well… I'm trying to understand how a BrowserStream object is terminated
|taxilian||10:12||so I'm changing things to BrowserStreamPtr (boost::shared_ptr)
but the problem is that if the user just drops the ptr, it releases the object
|taxilian||10:12||and thus crashes (since the browser keeps trying to reference it)|
you need to hold a reference to the stream somewhere
|taxilian||10:12||so I'm trying to figure out if I can safely have it hold a reference to itself until NPP_DestroyStream is called|
|eamann||10:12||Quick question for anyone who knows, is FireBreath compatible with the latest version of the Windows DDK?|
|taxilian||10:12||alternately, make it destroy the stream itself when it goes away so that the browser stops trying to call
eamann: several people have been able to get it to build with vs express and windows ddk, yes
nitrogenycs: which approach do you recommend? will the browser always call destroystream eventually?
|eamann||10:12||OK great. I have a separate project that uses the DDK that needs to be integrated into my FireBreath project ...|
|taxilian||10:12||probably depends on what you're doing with it
but I don't know of any reason it wouldn't work
|nitrogenycs||10:12||taxilian: I've made bad experience with the alternative way. Some browsers did not like it if you terminated the stream while it was still "in use".|
|taxilian||10:12||you'll just have to try it and find out
nitrogenycs: fair enough; that seems the best to me as well, then. I just hope that the browser does eventually destroy the stream...
even if the user doesn't =]
|nitrogenycs||10:12||taxilian: I agree it could get a bit of a problem. E.g. consider what happens if the user wants to download a 1GB file and then decides to abort the download after 10 sceonds. If the browser continues downloading that's really killing your connection for the next 15 minutes or so.|
|taxilian||10:12||right; of course, hopefully they would call close themselves in that case|
|taxilian||10:12||but I think it's best to make it so that the object can't be freed until after DestroyStream is called|
|nitrogenycs||10:12||yeah, I think so too
it's definitely the safest way
unfortunately I don't recall which browser's didn't like destroying the stream in the middle of some action. It might've also depended on the seekable stuff etc.
|taxilian||10:12||ahh, well. every good project should have at least one circular reference, right?|
|nitrogenycs||10:12||:) Maybe put the reference into a list/map in the browser host instead
That way you always have a view of all the active connections
|taxilian||10:12||hmm. that might be the better way to do it|
|nitrogenycs||10:12||you could go crazy and add a StreamManager to the brower host :)|
|taxilian||10:12||I'm considering having the browserhost keep a set of all JSAPI objects passed to the browser, and then have NPJavscriptObject,etc use weak_ptrs… then when the plugin shuts down, we can release all of hte JSAPI objects
it might come to that, but for now I'm trying to keep things simplish =]
I wasn't actually planning to replace *all* of your code… :-P
|nitrogenycs||10:12||I think there's no way to replace all of my code, since the IE stuff can only be done in a single way :)|
I do need to add support for uploads to your IE code, though, and make it useable from firefox
.. along with an abstraction to make it possible to use libcurl when it's there, if desired
have fun :D
I will probably make all my uploading go through form postbacks. That way I avoid all the proxy hassle.
Of course that requires you to write a temporary file
I wonder if these flash uploaders solved the proxy problem
tell me about these form postbacks
|nitrogenycs||10:12||very very simple: http://cgi-lib.berkeley.edu/ex/fup.html
this site is from '96
|taxilian||10:12||oh, you mean just simple html form
I thought you had an automated way of doing it =]
|nitrogenycs||10:12||yeah, but nowadays you can put them into an invisible iframe|
|taxilian||11:12||this is how I'm uploading things as well.. I'm just using curl to do it =]|
|taxilian||11:12||but you can't select the file for them
I want to use my UI for selecting their file (which has thumbnail support, etc) and then upload the file (or rather batch of files) automatically… and I need progress reports
thus I'm using libcurl now, but will be hopefully changing to winhttp which I hope will work properly with proxy things
|nitrogenycs||11:12||I am not sure winhttp will work with proxies out of the box in all browsers|
|taxilian||11:12||I don't know either; I know you can get it to work most of the time, since I've done it
but I don't know if it is 100%
even then, though, it uses the IE proxy settings, not the firefox (or whatever other browser) ones
|nitrogenycs||11:12||yeah, that's what I mean|
|taxilian||11:12||however, on firefox 3.6 and later there is now an API for getting proxy settings
though I haven't used it yet
|nitrogenycs||11:12||regarding the form post method, you can send hidden fields in chunks
you make your plugin read the image data from disk, then chop it in chunks which are posted
I haven't really tried this yet. It might be too slow.
Also a bit cumbersome on the server end
|taxilian||11:12||yeah, the server end would probably make me unpopular at work...|
|taxilian||11:12||grr. this is still crashing in weird places
I hoped to be done by now :-/
I have a final to go take
|nitrogenycs||11:12||so much for flash uploaders and proxies: http://gallery.menalto.com/node/86265|
|taxilian||11:12||hehe. yeah, they're a plugin just like we are|
|nitrogenycs||11:12||so there's probably no simple
yeah, but maybe they found some sneaky method to circumvent the problems
found the cause of the streams crash… and it's complete my fault :-P
was removing an iterator, then trying to increment said iterator… :-P
for some reason, it didn't work
computers are so picky
iterators + removing something = always be wary
I still remember when I did stuff like mymap.erase(it); in a loop
it's quite sucky to see the iterator failing in some instances, just because you frogot to do it = mymap.erase(it);
|taxilian||11:12||lol. hey, I usually am brighter than that, I must have been asleep that day :-P
hmm. that's a trick I didn't know; what does that return to it?
|taxilian||11:12||ok; so it gives you the next item?|
|nitrogenycs||11:12||yeah, if there is one|
|taxilian||11:12||hmm. I actually would have preferred the previous item, so my for loop would still work :-P
however, I just changed it to a while and it should be fine
|nitrogenycs||11:12||hmm, maybe using a reverse iterator gets the previous xD|
|taxilian||11:12||hmm… does URLNotify always get called after DestroyStream?|
|nitrogenycs||11:12||I don't know, I wouldn't rely on anything with regards to the order of functions invoked without excessive testing|
|taxilian||11:12||hmm. that's problematic… because I release the object in DestroyStream and then suddenly get an URLNotify :-/|
according to this "If the target is null, the browser calls NPP_URLNotify after closing the stream by calling NPN_DestroyStream."
I'd still test though. There were more sentences in the docs like that which I've found to be wrong for some browsers.
firefox sticks rather close to those pages
but opera and safari do things differently sometimes
|taxilian||11:12||well, I had forgotten that we use urlnotify for this… we'll always be doing that, right?
I can just have it wait until both have been called :-/ safer
|nitrogenycs||11:12||yes, we always use it|
|_neilg_||11:12||Sorry, was in a meeting - have you figured out about destroying streams now?|
taxilian: there are way too many if's for these things in the streams code...
yeah; I don't see a way around it, though
|nitrogenycs||11:12||taxilian: I doubt there is one really. Browser vendors should just fix their implementations. I guess the only implementation they really tested and support is flash and that's it
taxilian: Btw, you can also POST data with XMLHttpRequest :)
taxilian: I am not yet sure about the restrictions and minimum required browsers
|taxilian||11:12||so did you hear about kalev's brilliant flash of intuition yesterday? we finally fixed the long-standing "elusive crashes on NPN_ReleaseObject" bug that we've had bizarre workaround to avoid for ages
but can you post files?
|nitrogenycs||11:12||no, I only skim this channel if there are too many messages and take a look if my name is highlighted in any of them :)
what was the reason, I'm really curious
|taxilian||11:12||heheh. so aparently, when the browser calls NPP_Destroy() on a plugin
it then goes through and releases all NPObjects from the page that it had given to said plugin
|taxilian||11:12||so then when our reference counting got to it, sometimes it had already been destroyed|
|taxilian||11:12||the fix (for now, I'm working on a cleaner one) is to stop calling release as soon as NPP_Destroy is called
it makes sense when you think about it, but it isn't documented anywhere that I'm aware of
|nitrogenycs||11:12||so NPP_Destroy should be called NPP_Destroyed|
|nitrogenycs||11:12||However, really nice you guys found out about that|
|taxilian||11:12||that's what has me considering keeping a reference to all JSAPI objects passed to the DOM and using weak_ptrs on all the wrapper objects; that way, as soon as NPP_Destroy is called I can just release all the JSAPI objects and they should release their event handlers, etc before that happens
yeah; kudos to kalev for the flash of inspiration
that was the only remaining crash that we hadn't totally fixed that I am aware of
|nitrogenycs||11:12||ya, that sounds good
I am sure people will mail 3 new crash reports tomorrow xD
|taxilian||11:12||boost::weak_ptr is amazing, btw. it makes lots of things possible that wouldn't be otherwise =]|
|nitrogenycs||11:12||yeah, smart pointers are only so-useful without weak_ptrs accompanying them|
|taxilian||11:12||ok, I think I finally have this fixed|
|nitrogenycs||11:12||taxilian: Ajax POST: (Supported by IE7+, Mozilla 1+)|
|taxilian||11:12||will you have a couple of minutes to look over it?|
|nitrogenycs||11:12||yeah, can you point me at a changeset?|
|taxilian||11:12||nitrogenycs: I'm pretty certain that you can do it with IE6 as well, unless this is a refinement that 6 didn't have...
just a second, still committing
|nitrogenycs||11:12||Preferably an online one, I haven't switched to git yet|
|taxilian||11:12||no problem =] I just need to make sure I'm not accidently committing something extra|
|nitrogenycs||11:12||np, take your time|
|FB_GitHubBot||11:12||FireBreath: master Richard Bateman * 13fcf8f (17 files in 5 dirs): - Fixed BrowserStreams to use shared_ptr - http://bit.ly/gTU5gv|
|taxilian||11:12||that is the link, nitrogenycs|
|nitrogenycs||11:12||taxilian: thank you, looking at it niw
|nitrogenycs||12:12||taxilian: this one is unrelated, src/ActiveXPlugin/FBControl.h
but probably not bad
|taxilian||12:12||darn; you're right
that shouldn't have gone in there
not a major deal, but should be removed
|nitrogenycs||12:12||FB::ptr_cast<ActiveXStream>(shared_ptr()) -- this code creates a shared_ptr from this?|
shared_ptr is an alias for shared_from_this; for some reason I thought shared_from_this wasn't public, though it seems to be… not sure how that happened, but now I've established the pattern. :-/ some things aren't worth the documentation required to change them.
|nitrogenycs||12:12||ahhh ok, I was just about to ask on shared_from_this . It seemed a bit odd to do shared_ptr(), looks like it might return 0 or something :)
but it's fine for now
the code looks good from what I can tell
I am not sure if setNotified() might make problems with seekable streams
but I guess these should be really avoided anyways
|FB_GitHubBot||12:12||FireBreath: master Richard Bateman * d2797b8 (4 files in 3 dirs): - Minor tweak to configure_template function ... - http://bit.ly/gtGtWV|
|taxilian||12:12||hmm. good question
well, I gotta go study for a final and take it
thanks for your help and for the code review
|nitrogenycs||12:12||ok, no problem, good luck with the final|
i'm wondering if anyone has any bright ideas about how to update a plugin that's already in use by a browser - is it always the case that you have to restart the browser? and if so, do you just give the new version of the plugin a different filename and overwrite the old version's registration?
|neilg_||13:12||benpm: Two solutions
The first one is the one you found, restart the browser
The second solution is to make the filename of the plugin DLL have a version number that increases with each release. So you might have plugin_01.dll and then plugin_02.dll
There are other ways but those are pretty much the only ways that work across all browsers
|benpm||13:12||neilg: thanks, that's what I thought -- do you have any idea whether a browser will load the second version of the plugin once the registration info has been updated and the page reloaded? (i can test this myself, of course, but wondering what your experience has been)
i guess if not the whole exercise would be futile, so i gather the answer is yet
|amackera||16:12||Ugh I need to figure out a way to test my plugin better|
|taxilian||17:12||amackera: I found better info on doing windowless plugins
|amackera||17:12||oh? send my way!|
|taxilian||17:12||I have only some of it with me, but let me find it
I hate it when copy and paste doesn't do as it should =]
search the doc for windowless
you'll find plenty
|taxilian||17:12||this is the actual spec for OLE/ActiveX controls, including the details of how windowless works|
|taxilian||17:12||I've seen it referenced; not sure why I didn't think to search for it sooner|
|nitrogenycs||17:12||that's one dinosaur of a spec|
and yet it's what the IE side of firebreath is based on...
|nitrogenycs||18:12||I am trying to switch to git
I also took the opportunity to move my source code out to a separate directory
whenever I run the prep2008.cmd script I get
CMake Error: The source directory "C:/blabla/External/MyPlugin/FireBreath"" does
not appear to contain CMakeLists.txt.
where FireBreath is current master checked out from github
and I can confirm it contains a CMakeLists.txt
Also note the double double-quotes at the end of the string
|taxilian||18:12||.... what version are you using? the latest from github, no?
and what OS?
the cmake command it outputs is
|taxilian||18:12||lol. I was gunna be really impressed... :-P|
|nitrogenycs||18:12||cmake -G "Visual Studio 9 2008" -DPROJECTS_DIR="c:\blabla\External\MyPlugin" "C:\blabla\External\MyPlugin\FireBreath\"
I guess the \ escapes the " at the end or something
|taxilian||18:12||what is the command you're running?
|nitrogenycs||18:12||prep2008.cmd with my pathes
I tried relative and absolute ones
|taxilian||18:12||can you tell me the actual paths? the direct command line you run? in a PM if you prefer|
|nitrogenycs||18:12||the build dir is created|
|taxilian||18:12||because the projects dir listed in the "generated" is not correct
it shouldn't ever do that
|FB_GitHubBot||19:12||FireBreath: master Richard Bateman * 28336d4 (2 files in 1 dirs): Added fix to windows prep script for old versions of cmake -- removed trailing slash from FB_ROOT - http://bit.ly/eZz9NR|
|taxilian||19:12||nitrogenycs: that commit should fix your issue (though you fixed it by upgrading)|
|nitrogenycs||19:12||taxilian: cool, thanks for the fix. I've succeeded to build my plugin in this second
taxilian: so I am on git now, too :) woohoo
|taxilian||19:12||suite =] yeah, git is pretty nice; have you read any of http://progit.org/book/ ?
it's the best "getting started with git" reference I've found; chapters 2 and 3 are well worth the read
or of course you could read this instead: http://progit.org/book/de/
|nitrogenycs||19:12||I haven't read that book yet, but I've got a bit of experience with git through another project I am collaborating with
I usually prefer reading the english version of books, I find it easier to understand than reading it in german actually :)
For technical books that is
|taxilian||19:12||lol. I can understand that, actually... most often such books are written in English first|
|nitrogenycs||19:12||yeah, and even after translation half of the words stay the same :)
or are translated to strange latin words
yeah, I've read some techincal articles in Russian... I always find it amazing that Russians who don't speak english are even able to understand them
|taxilian||19:12||of course, it also surprises me how often I come across something written in Russian that I need to read for whatever reason... sometimes even tutorials that I can't find in English|
|nitrogenycs||19:12||haha, I know that feeling. In some rare circumstances I find just a single google hit for a certain problem I have. And then the words/code I searched for appear surrounded by cyrillic letters....
And I know 0 russian
that's about how much German I know, so... =]
and I'd say your English is much better than my Russian, at least in written skills
|nitrogenycs||19:12||I also need to learn another language in my life
I learned latin for several when I was in school
but that's not a real language
|taxilian||19:12||we Americans tend to be language snobs... most of us don't feel the need to learn another language|
|nitrogenycs||19:12||I don't really feel the need either, but I've always enjoyed languages|
|taxilian||19:12||I really enjoyed learning Russian; just wish I had more time to keep up with it :-/ I'm losing my ability, little by little|
|nitrogenycs||19:12||teachers at school were mad at me that I was going to do something technical rather than something language based
yes, I am sure I forgot all the latin grammar by now
I know somebody who just started learning finnish
I looked at the language sheet and it has something like 20 different cases
immediately dismissed :)
finnish sounds really cool, though
|nitrogenycs||19:12||I've certainly heard it sometime, but can't remember the sound of it
there are some interesting languages where the time directions are switched for example
but they are a bit too esoteric
|kylehuff||19:12||I have the verbal ability of a floundering seal pup on LSD... I wish all languages were only written and never spoken because good lord I suck speaking other languages..|
|nitrogenycs||20:12||Ahh, I like both
My girlfriend has to learn dutch at the moment, they also have some funny sounds
|kylehuff||20:12||I have spent the last 3.5 years trying to roll my R's for french and arabic.|
|taxilian||20:12||lol. I'm much better at speaking than I am at understanding, oddly enough
anyway, something to think about; I want to add a "quick stream" method to BrowserHost, so you can basically say "host->getURL("http://.....", boost::bind(shared_ptr(), urlCallback)) or some such and have it call your callback when it's finished
trying to decide the easiest way to do that
and have it take care of all the annoying details
I think it would be a very useful feature, since (most?) often when we need to get something we just need to do a simple download
also, I need it :-P
|nitrogenycs||20:12||yeah, the belgium guys always roll their Rs like mad, I mistook them for some eastern european guys more than once|
|taxilian||20:12||anyway, I'm going to go find dinner, then I'll be back. maybe in an hour? cya|
|nitrogenycs||20:12||yeah, a simple downloader sounds fine
I guess you could give it a filename and/or an iostream or something