IRC Log Viewer » #firebreath » 2010-10-21

IRC Nick Time (GMT-7) Message
iaincollins 02:10 Got to spend some time on FB again this week (my main project; but keeps being eaten into by other projects)
been learning about cmake; which I'd not come across before and I think is awesome (good call)
also WiX... while I've tried several MSI builders in the past (usually settling for scripting heavy customisation to the installer it generates and esoteric workarounds for odd behaviour)...
it only took an hour or so to get WiX doing what I wanted, which was remarkably not-annoying :)
the inclution of a "starter config" was especially helpful (might be an idea to add a simple upgrade/downgrade section to that?; will see if I can come up with a specific generic suggestion)
How the whole build process hooks together is just fab
taxilian 08:10 iaincollins: glad it's helpful for you =]
iaincollins 09:10 morning (aka afternoon) :)
taxilian 09:10 =]
iaincollins 09:10 actually had a question about installing
taxilian 09:10 it's really really funny to me that the vast majority of FireBreath users (and even contributors) are outside of the US
iaincollins 09:10 oh really?
I do notice some countries seem to be disproportionally active on line (Spain, Portugal, Israel)
taxilian 09:10 yeah; amackera is in Canada, Georg in Germany, Nitro is Germany, ...
anyway, go ahead with your question
I'll answer if I can =]
nirvdrum: are you on linkedin?
nirvdrum 09:10 Yeap. Kevin Menard.
iaincollins 09:10 ah yes so, I have the WiX installer (upgrade/downgrade)..
taxilian 09:10 I tried searching for you, too many Kevin Menards. Add me? [email protected]
nirvdrum 09:10 Sure, I'll do it at lunch.
taxilian 09:10 cool, thanks =]
nirvdrum 09:10 I think I'm in there as [email protected]
iaincollins 09:10 It's installed by a seperate .exe; which triggers the MSI install (ideally with additional no user interaction; but not necessarily)
if I upgrade the plugin silently, having it not present a UI it goes ahead and upgrades the plugin *but* causes the current running instance of MSIE to stop working (the window no longer loads pages, but works normally otherwise - even if it's on a page that doesn't currently display the plugin when I install it, but that has been loaded previous (i.e. so plugin has been invoked already, even if not active right now))
taxilian 09:10 wow… never seen that before
iaincollins 09:10 if I run the MSI interactively the "you should close the following applications before continuing" dialog
which is fine, but it's a bit horrible and generic (and tried it half a dozen times but didn't work on any occation)
taxilian 09:10 iaincollins: are you doing something unusual / added in the install? you shouldn't need to restart IE to install or upgrade an ActiveX control
iaincollins 09:10 if I use the regsvr32 way of loading (and I fully I take on board that's not appropriate in a live environment) it doesn't have that problem
I should say, it's okay to install, it only happens when upgrading
no, although I am having it remove the existing version
taxilian 09:10 hmm. it must be doing something weird, then in the MSI or in your .exe
because the MSI should normally do basically the same thing as regsvr32, just in such a way that it stores the changeset and can reverse it
iaincollins 09:10 Hmm, maybe I will try using a different name for the DLL (adding a version number)
yeah saw it seems to do that, and totally agree some form of MSI install is the way to go (and I don't think this is WiX's fault)
taxilian 09:10 ahh
yes, you don't want to replace the DLL
iaincollins 09:10 Aaah cool!
taxilian 09:10 you really want to put a new one in and switch the registration
iaincollins 09:10 Once I started typing this out I started to remember you said something like that
Should I explicitly leave the old one present?
taxilian 09:10 something to think about, btw; all of this should really be better documented on the website. If you could help upgrade those docs, that would be awesome
iaincollins 09:10 (and just remove it if the package is removed)
sure will keep notes and do that
taxilian 09:10 I would remove the old one
iaincollins 09:10 and just use a new name?
cool thanks, will try that
(and document :)
taxilian 09:10 usually an installer will have an option to remove on reboot so if the current one is in use it will leave it, but mark it to be removed the next time the system restarts
iaincollins 09:10 the documentation is super-helpful
ah I see
taxilian 09:10 good! amackera wrote all of the current WiX documentation
I think he did a very good job
but it's always good to get a little more
iaincollins 09:10 I wasn't at all surprised it was causing oddness, I was just hoping to not have to try and do what Adobe have done in the past (but seem to have stopped doing thankfully) which was to look for browser process and nag you till you quit them (yuck)
taxilian 09:10 totally agreed =]
iaincollins 09:10 thanks for that advice *tries it out*
neilg_ 09:10 Morning!
I now have the first of the 4 plugins switched over to using FireBreath and working in IE - I'm very happy!
taxilian 09:10 neilg_: well did =] glad it's working for you
neilg_ 09:10 Me too! :)
I do have one question though
I have two methods that take a variable amount of parameters
It either takes two strings or two strings and an integer
taxilian 09:10 FB::CatchAll
use it as the last parameter and it will catch 0 or more arguments
neilg_ 09:10 Okay, I was going to ask if that's what I should use. I was right. Hurray! :)
taxilian 09:10 really? excelent… the docs must be better than I thought, then ;-)
neilg_ 09:10 I'd tried FB::VariantList to being with but that failed (it expected only one argument?) so I looked at the documentation and saw FB::CatchAll - but only after another parameter
taxilian 09:10 feel free to update them to make them more clear, though =]
VariantList matches an array
a single argument that is an array
neilg_ 09:10 That's what I guessed when I saw that error - but I wasn't sure
taxilian 09:10 now you know =]
neilg_ 09:10 Indeed! :) Thanks!
taxilian 09:10 Neil: are you on linkedin?
neilg_ 09:10 I am - though I haven't logged into it in many months. I probably should use it more than I do...
taxilian 09:10 hehe. I got thinking yesterday and realized I should probably build up a network of FireBreath users with LinkedIn, as it may be handy in the future and it's probably a good source of recommendations. =] If you'd like to add me, I'm [email protected] on linkedin
neilg_ 09:10 Sure, I'll do that. I know I have outstanding requests on there, it emails me at least once a week telling me so!
taxilian 09:10 hehe =]
taxilian 09:10 be back in a bit
taxilian 10:10 I have just successfully requested a page from the web server embedded in my FireBreath plugin
iaincollins 10:10 running an HTTP server from in the plugin?
taxilian 10:10 yep
iaincollins 10:10 neato :)
taxilian 10:10 it's pretty cool
the idea is that if the page is generated from the plugin, you can trust that it's not doing anything fishy
iaincollins 10:10 that could actually be very handy
taxilian 10:10 well, it's in dev now
not fully tested yet, however
amackera 10:10 Hey how do you guys test your plugins?
Just try them out on as many machines as you can? or is there a better way?
taxilian 10:10 well, the "ideal" way
is to build automated tests for them
and then try them on every conceivable machine configuration
or as many as you can manage
testing plugins is ridiculously difficult, though, particularly if you're doing anything with graphics acceleration
like, for example, opengl
amackera 10:10 heh, nuts
iaincollins 10:10 In practice am testing mine on a vareity or Vmware images and physical machines (Win XP with no service pack, SP 1/2/3, Visa, Vista with SP1, etc) but manually, usually with a test page or expected in/out out
and QA do formal testing with a range of specific OS/Service Pack/Browser combintations
I would prefer to have a lot more automated testing
but usually it comes down to some half-way house approach because of time + conflicting projects
taxilian 10:10 bare minimum I would test on winxp home, winxp professional (both in non-admin mode), vista w/ no UAC, vista w/ UAC, win7 w/ UAC, win7 w/ no UAC
if you can, test both 32 and 64 bit for those windows platforms
iaincollins 10:10 Yeah that's started to become an issue
taxilian 10:10 and then whichever mac platforms you support, though that's less error prone
iaincollins 10:10 We end up getting a report from QA on what their 'vibe' is as well as bugs in Jira
amackera 10:10 hmmm
iaincollins 10:10 so if they think it's shoddy we can take a look at it again, if it's okay but crummy in edge cases it ends up being either polished or sent out with the bugs in
although that's often due to time critical stuff (like: it's not as bad as the bugs in the current vesion; or we are running out of CD's)
taxilian 10:10 the real problem is that with an opengl plugin, a large number of your bugs will likely come from weird graphics cards whose drivers don't implement ogl well
so you'll have to test with physical hardware and you'll never catch everything
iaincollins 10:10 yeah, it's a PITA to test OpenGL stuff (and my experience with it is strictly personal, for fun)
even with cards from the same vendor and roughly the same generation
amackera 10:10 yeah that's what i've noticed also
taxilian 10:10 I was testing primarily DirectX stuff on windows, but the same rules apply
50 million installs means that lots just don't work… and nobody knows why
amackera 10:10 we're trying to rig up something using mechanical turk
but it's hard to get meaningful data out of it
iaincollins 10:10 We find trials helpful, we let 100-200 real world (mostly) "friendly" customers try it out and give us feedback
(we do that for hardware too)
even though it doesn't seem that many (relatively) it's great feedback
taxilian 10:10 I agree; that's probably the best way
amackera 10:10 hmm
taxilian 10:10 there are also companies that will do testing like that for you, but they tend to be expensive and not always helpful;
if you can ever get grompy (Jarom) in here, he is the head QA guy for Move Networks and has more experience with this than anyone else I know
amackera 10:10 it seems to me like inevitably one must test on real hardware, on as many different configurations as possible
taxilian 10:10 to some extent that depends on what kind of plugin
but for yours? yes.
amackera 10:10 yes, good point
taxilian 10:10 that would actually be one major advantage to you for open sourcing your plugin; more free testing
amackera 10:10 yeah very very true
taxilian 10:10 that's one of the main reasons that Facebook allowed me to use FireBreath for their plugin
the core is being tested by a lot of people
iaincollins 10:10 yeah I'd love to open source some of the stuff here, some hesitance for bits though as is "deemed valuable"
taxilian 10:10 which is understandable
iaincollins 10:10 but frankly I'd like the help (especially to spot known bugs in the threading code under Windows)
taxilian 10:10 there are advantages and disadvantages to that
iaincollins 10:10 and I think some of the stuff is actually interesting enough people would use it
taxilian 10:10 Facebook may very possibly open source the plugin I'm working on, actually; that would probably end up being one of the best examples if not the best example for FireBreath available
if only because being written by me you know that there aren't any features that weren't used because they weren't known :-P
amackera 10:10 haha very true
taxilian 10:10 this web server stuff is pretty cool; all donated by Facebook =]
it's a great job when someone pays you well to do what you wanted to do anyway
iaincollins 10:10 do you manage to fit that in around other stuff okay?
must tough if your studying at the same time
taxilian 10:10 suffice it to say that my wife doesn't see me as much as she'd like right now :-/ however, you do what you have to. I only do 20 hours / week of work
iaincollins 10:10 You are married too? Well done on finding any time :)
taxilian 10:10 did I mention my 15 month old son? ;-)
iaincollins 10:10 cripes, lol
I'm enjoying being single for the last few months as I have free time again (just a GF, and a dog)
hard enough with a dog :)
taxilian 10:10 hehe. it can be hectic… wouldn't trade it, though
iaincollins 10:10 okay one last build and I have a pub to attend...
my vmware instance really creaks through building for some reason :)
taxilian 10:10 heh. yeah, I hate working through vmware; usually the only choice I have, though
iaincollins 10:10 (am fiddling with cmake files and so need to nuke the build dir periodically)
am keeping some notes how how maybe it could be improved with regard to some trivial stuff like what variables are used where (although expecting some will be just a result of misunderstanding how/where they are used)
taxilian 10:10 iaincollins: you can *usually* keep the build dir between cmake changes
unless your changes are really major
just re-run prep
iaincollins 10:10 Yeah, I've been messing about with some major ones too, like plugin name :)
taxilian 10:10 yeah, I can see how that would make you start clean =]
iaincollins 10:10 partly to get an understanding of what breaks and how it all hangs together :)
taxilian 10:10 we really need to overhaul the config mechanisms for FireBreath :-/
iaincollins 11:10 any bits in particular to watch out for, or that you'd like to do better if you did it over?
taxilian 11:10 mainly the problem we have is that it's very hard to update/improve things that have to be created by the user because the factory functions then break
the factory functions in particular I'm not happy with
need something less fragile
not sure what to use
I have some ideas, but I'm still debating a bit
iaincollins 11:10 Oh? Don't feel they are things that could be address by incrimental improvement?
taxilian 11:10 that's the problem; incremental improvement in this case causes breaking changes with each version
when we fix it, it needs to somehow avoid that
for example
to support multiple MIME types in one plugin, we need to pass in the requested mimetype to the _getMainPlugin() function call
when we do that, it will cause link errors on any plugins written before the change
until they update their _getMainPlugin() function
lots of things don't really need to be changed most of the time, but we can't provide defaults and allow them to override, we have to expect them to implement the factory functions
it's not really ideal
iaincollins 11:10 Hmm my attempt at a fix for the restart issue didn't work, wish I could stay and look at but promised to see a friend across town tonight
taxilian 11:10 good luck
take care
iaincollins 11:10 thanks, and you!
neilg_ 11:10 I have another question. I'm full of those today!
taxilian 11:10 I'm good at answering questions
neilg_ 11:10 If I create a plugin instance and pass it a parameter pointing to a URL then NPP_NewStream is called
taxilian 11:10 as long as the answers don't have to be correct
neilg_ 11:10 How do I hook into that?
;)
taxilian 11:10 I don't think we support that yet; it shouldn't be too difficult to add support, though, using the BrowserStream stuff
I'm not sure if that method works on IE, though
you might want to pass the parameter with a <param> tag and then use the browserstreams stuff to request it
would probably be easiest
but nitrogenycs might have some ideas, since he wrote browserstreams
neilg_ 11:10 That'll work - so long as I have a way to do it. :)
neilg_ 11:10 What's the lifetime of a BrowserStream object? I'm guessing that I'm responsible for deleting it?
taxilian 11:10 hmm. I don't know =]
if you are, we should probably change it to be a shared_ptr
I haven't actually used that yet, so it is difficult for me to say
it's on my list of things to use, though, as it is the only thing so far that I don't know how to use in the FireBreath codebase (other than the mac drawing models, but I'm not a graphics guy)
neilg_ 11:10 There's a Todo in the documentation suggesting it should be a shared_ptr (I'd concur if I'm responsible for freeing it!)
I'll just go ahead and delete it and if anything crashes... I was wrong. ;)
taxilian 11:10 lol
nitrogenycs: you around?
nitrogenycs 11:10 taxilian: semi-around, i'll answer a bit later. all i can say for now is that implementing uploads might not be trivial in ie and/or netscape. at least if you want certain properties (like uploading a stream and not a file). But I'll have to look at it again. Which I don't have time to do during the next few days/weeks.
taxilian 11:10 this isn't uploading
it's more an automatic download
that the browser initiates instead of us
the other question, though, is: should BrowserStream go into a shared_ptr?
anyway, when you have a few more minutes we can talk about it
taxilian 12:10 cygmatic: I have one last breaking change I think we need to make, but I'm not sure how to best do it
hoping that your c++ awesomeness can come up with a good solution
we need a better way to deal with configuration stuff that is currently handled by factory methods
neilg_ 12:10 Hmm. I could well be misreading the documentation - I've overloaded initDefaultParams() in my plugin but nothing calls it (which is what I expected). Am I doing something silly?
taxilian 12:10 hang on
hmm. that should work...
http://firebreath.org/display/documentation/file%20PluginCore.cpp#l00046
you can see that it gets called from the constructor of PluginCore
cygmatic 12:10 taxilian: will be back in ~1h
taxilian 12:10 ok
neilg_ 12:10 Yup. But it appears being called from the constructor only calls initDefaultParams in that scope
Hmm
taxilian 12:10 ?
what do you mean?
ooho
yeah, you're absolutely right
the docs are incorrect
I will fix that
the best way is to pass a StringSet into the contructor
neilg_ 12:10 So I should call it from my own constructor for now... How would I pass a StringSet into the constructor?
taxilian 12:10 I think you can do that with : FB::PluginCore(FB::StringSet(list_of("param")("param2")("param3"))
cygmatic could tell you better than I can on that, but he'll be back in 1h =]
neilg_ 12:10 Yep, you're absolutely right. Now I'm getting somewhere! =)
taxilian 12:10 wait… that worked?
kalev 13:10 cygmatic: hey, I'm finally replying
08:23 <@cygmatic> kalev, does your fix mean we can remove that ugly -ldl in cmake/X11.cmake:55 ?
short answer is yes
long answer is that I didn't notice the -ldl in there: my plugin overrides FB default NPAPI_LINK_FLAGS and the -ldl line never had any effect in my plugin
but in any case I agree that -ldl in cmake/X11.cmake:55 is ugly and we're better off with the other solution.
cygmatic 13:10 kavel: ok, good to know - thanks
taxilian 13:10 lol. kavel?
cygmatic 13:10 kalev i mean :/
weird day
taxilian, so what where you planning?
taxilian 13:10 cygmatic: I'm really not sure yet
I've had some thoughts
cygmatic 13:10 and "Util/JSArray.h" wasn't a _bad_ include, just redundant ;)
taxilian 13:10 lol. it became a bad include when I moved the file...
neilg_ 13:10 taxilian: Yes, that worked. Although now I have the issue that I have that param in my plugin instance but I need to kick off the stream from my plugin JSAPI
taxilian 13:10 yep
read the docs; I don't know how it works =]
cygmatic: so I've had two thoughts on the config thing
the first would be to create a class that they user extends, which would then allow us to add methods with default implementations. we could specify the config class name in PluginConfig and autogenerate a cpp file to instantiate it
that would allow us to even have overloaded functions like a getPluginMain that accepts a mime type, etc, which then call the original if not overloaded
kalev 13:10 cygmatic: okay, pushed 6e71923f2e7d which removes the -ld
cygmatic 13:10 cool, no work for me :)
taxilian 13:10 cygmatic: the problem with that is we'd probably need 4 classes; 1 for generic and one for each platform
my second idea would be to create some sort of global "config" class that uses VariantMaps to store function pointers; we can then have multiple versions of any given function pointer, check which version it is and act accordingly
I'm also open to other ideas
cygmatic 13:10 you are talking about making FB more library like?
taxilian 13:10 I'm talking about finding a better solution than the factory funtions
which cause breaking changes that are confusing to users any time we change them
i.e. to add windowless support, we have to add a new getPluginWindowless function, which in turn throws a link error if not defined, etc
neilg_ 13:10 Any clue as to where to look in the documentation? I don't see a link between the JSAPI object and the Plugin object (other than the Plugin object creates the JSAPI object...)
taxilian 13:10 neilg_: your problem is just that you need to get to your plugin object from the JSAPI one?
neilg_ 13:10 I think so. The plugin object has all the params (including the one I need so I can kick off a BrowserStream)
taxilian 13:10 hang on, then
neilg_ 13:10 There may be a better way but that's the most obvious to me at the moment... well, apart from not knowing how to do it! ;)
taxilian 13:10 no, that's probably the best way
your plugin object should really handle streams
neilg_ 13:10 I agree completely - it would mirror how my non-FB plugin works
cygmatic 13:10 taxilian: hm, i like the subclassing approach more - the variant road would mean type erasure and harder to find errors
with subclassing we can just look at the base class declaration as for what to implement
taxilian 13:10 cygmatic: the primary advantage of the variant road is that it is a lot less rigid, which means it's easier / more possible to make more drastic changes without breaking backwards compatibility
fo course, that makes it less clean as well
neilg_: what you're basically going to want to do is to keep a boost::weak_ptr reference to your plugin object
then lock it when you need to access the plugin object
neilg_: look at http://code.google.com/p/firebreath/source/browse/examples/FBTestPlugin/FBTestPluginAPI.h?repo=dev
cygmatic 13:10 taxilian: ok, but what could you break? only if you change the methods signatures / types, in which case you get harder to find errors in both cases
taxilian 13:10 specifically look at how the shared_ptr is passed into the constructor and what getPlugin() does to get a good reference to it
neilg_ 13:10 Okay, so I should change the constructor (or create a function) on the JSAPI object so it can get back to the plugin object? I'm fine with doing that, I just didn't know if there was a better way.
taxilian 13:10 just need to make sure it's a weak_ptr that you hold and you don't store the shared_ptr longer than you need to
neilg_ 13:10 Yup, that makes sense, I've dealt with circular reference loops too many times before! :(
taxilian 13:10 cygmatic: specifically I'm looking at recent changes; much of the recent changes could have been "masked" for old projects with this approach
cygmatic 13:10 only the renaming ones, which we should have finished now as the naming scheme is more clear
you'd have to make changes in both cases anyway if you want it to work
the variant way would also mean a two-step implementation, one for the actual factories, one for inserting them into the map or what-ever
i don't see what one would gain in return :)
with forward declarations for the configuration-specific classes it would also get rid of #ifdefs in the declarations etc.
taxilian 13:10 hang on
talking to a teacher about it
cygmatic 13:10 ah, argumentative support ^^
taxilian 13:10 cygmatic: well, after discussing it with my professor (guy named Chuck Allison who was on the C++ board for 10 years; guy is brilliant), I still can't think of a better method than using classes
the problem is, this should really be done for 1.3 since it's going to end up being a breaking change :-/
but I won't have time this week
and I'm not fully sure what it should all look like
cygmatic 14:10 hm, i could scetch it roughly out in a clone on the weekend
taxilian 14:10 if you don't mind, that would be awesome
cygmatic 14:10 on another matter, that "returning simple structs from JSAPIAuto" not only reminded me of wanting to document/clean up the conversion stuff for extensibility, but also made me think wether it would be nice to create simple objects on the fly
taxilian 14:10 cygmatic: we can, though; in a map
that gets converted to a JS object
cygmatic 14:10 that was my thought, does that work already?
i.e. "return variant_map_of("x",1)("y",2)("z",3);"
taxilian 14:10 yes, it should
cygmatic 14:10 oh, oops
nevermind then ^^
i sometimes overlook the JS side i guess
taxilian 14:10 =]
that's okay, that's my strongest point
cygmatic 14:10 taxilian: nice having such professors btw :)
neilg_ 14:10 Does anybody know how to create a BrowserStream properly?
I'm trying to create one from within my plugin instance like this:
FB::BrowserStream* pBrowserStream = m_host->createStream(strURL, this);
createStream calls into AttachObserver which calls back into my plugin calling HandleEvent. On the generated code line:
EVENTTYPE_CASE(FB::AttachedEvent, onWindowAttached, FB::PluginWindow)
It calls into FB::PluginEventSource::get_as<FB::PluginWindow>() which then throws a std::bad_cast
Clearly I'm doing this wrong, I must need to create a PluginWindow
taxilian: The documentation isn't clear about this, do you have any insight?
taxilian 14:10 neilg_: If you want to use your plugincore object as the event sink, you'll need to change the AttachedEvent to use FB::PluginEventSink instead of PluginWindow
and then inside the handler cast it to whichever type it is to handle both options
hmm
there should be a better way to do that
what version are you using?
neilg_ 14:10 1.30RC1
taxilian 14:10 if I add a feature for you, do you mind changing to trunk?
neilg_ 14:10 Nope, that shouldn't be a problem
taxilian 14:10 hang on
actually
go ahead and switch to the trunk =] get it checked out from mercurial
and I'll have this in for you shortly
neilg_ 14:10 Cool, sounds good!
taxilian 14:10 ok, it's in; test it for me, eh?
you'll want a EVENTTYPE_CASE(AttachedEvent, onWindowAttached, FB::PluginWindow)
and a EVENTTYPE_CASE(AttachedEvent, onStreamAttached, FB::BrowserStream)
neilg_ 14:10 Yep, I'll do that
PluginCore fails to compile now, did I not get all of your changes?
taxilian 15:10 let me check
neilg_ 15:10 That's definitely possible, I'm no expert with hg!
taxilian 15:10 I may have missed something, . I'm checking
yeah, I missed something
gimme a minute
neilg_ 15:10 Sure, np
taxilian 15:10 do a hg pull -uv and try again
neilg_ 15:10 Awesome, that built. Thanks! Time to test!
taxilian 15:10 cygmatic: are you where you could look at a compile error on mac for me? it's boost related, not template, and I just can't figure out what is going on
cygmatic 15:10 could take a short look
taxilian 15:10 pull the latest firebreath-dev
neilg_ 15:10 Awesome, that worked. Thanks a lot!
taxilian 15:10 add the line: add_firebreath_library(HttpService) to PluginConfig on FBTestPlugin
try to build it
neilg_: no problem. I'm glad you mentioned it; that needed to be fixed
now it'll be in 1.3
cygmatic 15:10 taxilian: you should listen to this: src/ScriptingCore/JSArray.cpp:66: warning: reference to local variable 'output' returned
taxilian 15:10 cygmatic: I thought I fixed that… sorry
wait
it didn't finish pushing
weird error
hang on
do a pull
I thought I fixed that =]
cygmatic 15:10 what is HttpService?
taxilian 15:10 a web server
uses boost::filesystem, which uses a utf8 conversion class thing that is throwing a link error
here is what i'm seeing: http://pastebin.com/QAx5YStA
cygmatic 15:10 hm, it currently tries to build windows stuff on mac too
taxilian 15:10 in the boost stuff or did I miss something in HttpService?
cygmatic 15:10 httpservice
which also uses _snprintf
taxilian 15:10 hmm. I'm not running into that error
that sounds like something I already fixed again...
did you do a pull?
cygmatic 15:10 yeah, now with a rm -r buildex... lets see
taxilian 15:10 do another pull just in case
and a merge just in case =]
neilg_ 15:10 Okay, so I just managed to meet my goal for today of streaming in a file. Yay! Downside: I never get a StreamCompletedEvent
And that's because of "if ( isSeekable() && success ) return;" at the top of NpapiStream::signalCompleted
There's the comment: // If seekable, then complete is immediately sent after the open call worked. But we don't want to signal completenes right then.
I don't understand what that's trying to tell me :(
taxilian 15:10 ask nitrogenycs, if he's around
neilg_ 15:10 Okay. Well, I'm going to assume that the comment is from old behaviour and I'm going to change it locally. ;)
taxilian 15:10 ok
let me know how that works out =]
cygmatic 15:10 taxilian: when removing log4cplus from FBTestPlugin/PluginConfig, prepmac fails: CMake Error at cmake/common.cmake:122 (list): list sub-command REMOVE_DUPLICATES requires list to be present.
ok, and why do i have to boost_filesystem targets?
and 2 boost_system
taxilian 15:10 I don't know.. that is quite strange
cygmatic 15:10 and 2 HttpService
taxilian 15:10 yeah. it shouldn't do that
I don't know
it doesn't do that when I create it with my facebook project
crum; this isn't going to work. let me add another project
give me a few minutes
neilg_ 15:10 So I've been talking with nitrogenycs and I've tracked down the stream bug
It's a really simple fix. What's the best way to submit patches?
cygmatic 15:10 taxilian: apart from the duplicate targets and warnings it seems fine
neilg_: easiest for us would be if you put it in a clone
taxilian 15:10 cygmatic: that's becuase it's not being used; the link error doesn't show up
I'll have to send you the project
cygmatic 15:10 neilg_: e.g. from here: http://code.google.com/p/firebreath/source/clones?repo=dev
taxilian: either that or a snippet that uses it
neilg_ 15:10 Okay, I'll do that!
cygmatic 15:10 taxilian: but could it be that you missed some source file for boost.filesystem which simply wasn't referenced until now?
taxilian 15:10 no, the file is there
it's weird
cygmatic: http://bobb.us/~richard/PhotoUploaderPlugin.tar.gz
it doesn't have any facebook specific code in it yet anyway
extract it to projects and build it
cygmatic 15:10 a "project find" doesn't show up a definition of the utf8_codecvt_facet
only a "new"
taxilian 15:10 it's included in one of the filesystem .cpp files
kinda weird
/src/3rdParty/boost/libs/filesystem/v2/src/v2_path.cpp includes src/3rdParty/boost/libs/detail/utf8_codecvt_facet.cpp
cygmatic 16:10 yeah, grep -r shows me their idea of code-reuse ;)
taxilian 16:10 hehe
yeah
kinda… hacky.
which is probably why I can't figure out what is going on
seems like there must be a build option or something that isn't working righ
but if I look at the original jamfile I don't see anything weird
crap… didn't mean to modify the file.
course, doesn't matter since we're not linking dynamicly
cygmatic 16:10 taxilian: why is there a utf8_codecvt_facet.cpp in src/3rdParty/boost/libs/filesystem/v3/src/, but not in src/3rdParty/boost/libs/filesystem/v2/src/
it should be that missing file
taxilian 16:10 it's missing in the boost repo as well
the file is located in libs/detail
cygmatic 16:10 look in v3, its included there
how would the one in libs/detail/ know what namespace to use?
its shared between multiple boost libs
taxilian 16:10 wait a second...
well, it uses a define
but..
cygmatic 16:10 if you look in the one in libs/detail you'll see that it is meant to be included as it uses namespace macros
taxilian 16:10 I misread something, I think
yeah, it is meant to be included
but that file *is not in* the boost tree at that point
cygmatic 16:10 yep, just copy the one from v3 over, builds fine
taxilian 16:10 … that's weird
cygmatic 16:10 maybe they missed it, maybe they re-use the one from v3, maybe they use bjam magic, ... ;)
taxilian 16:10 yeah, I guess
hang on, let me confirm that
can I tell you how much that frustrates me? =]
huh. well, thanks =]
cygmatic 16:10 i know, it's not high on my list of things-to-hunt-at-night either ^^
taxilian 16:10 I appreciate your help tracking it down, though
I might never have found that
cygmatic 16:10 you're welcome
good night & good luck then
taxilian 16:10 this web server is actually pretty slick
amackera 17:10 you know in mozilla crash reports, how it tells you the address of where in your plugin it crashed
is it possible to figure out what line of code that points to?
taxilian 17:10 hmm; maybe
more likely on mac than on windows
amackera 17:10 [email protected]
I'm on mac right now
taxilian 17:10 it is possible to create a file with debug symbols
that maps to your release binary
or maybe it's that you can create a binary with symbols and then strip them out
I forget
problem is, I don't know how
amackera 17:10 haha ok
i am compiling in debug mode
but that doesn't automatically include the debug symbols?
taxilian 17:10 at Move our plugin did that, though
probably
amackera 18:10 do you think this is what i'm looking for? http://stackoverflow.com/questions/3286675/readelf-like-tool-for-mac-os-x
taxilian 18:10 looks promising
amackera 18:10 (i'm installing binutils now)
ooo
otool -tv /path/to/binary
taxilian 18:10 excelent
amackera 18:10 it's all assembly, but it gives you the rough idea of where it failed
taxilian 18:10 cool
I'll have to remember that
amackera 18:10 Huh, just found a weird bug...
taxilian 18:10 oh,yeah?
amackera 18:10 if you set the windowless param to true then firefox 3.5 crashes
it delivers a null window->window in NPP_SetWindow
taxilian 18:10 wow
cool
amackera 18:10 i think because i'm SetValue()ing NPPVpluginWindowBool or NPPVpluginTransparentBool
taxilian 18:10 might have to check that
amackera 18:10 Yeah it looks like if you set NPPVpluginWindowBool it won't deliver you a window ref in firefox 3.5
hm...
taxilian 18:10 hmm
amackera 19:10 i guess that means we need to check if we're running in mac os before setting that
taxilian 19:10 huh
amackera 19:10 any quick/dirty/easy ways to do that?
taxilian 19:10 #ifdef XP_MACOSX I think
amackera 19:10 Ah of course!
thanks :)
taxilian 19:10 that might not be it, but a little digging should turn it up