IRC Log Viewer » #firebreath » 2011-04-18

IRC Nick Time (GMT-7) Message
FireBreathBot 00:04 Commit 574ba4b on firebreath-1.5 by Richard Bateman: "FIREBREATH-40 added shutdown() command to fbgen template"
Commit 574ba4b on master by Richard Bateman: "FIREBREATH-40 added shutdown() command to fbgen template"
JIRA issue issue closed by richard
JIRA issue issue closed by richard
JIRA issue issue closed by richard
JIRA issue issue closed by richard
JIRA issue issue closed by richard
JIRA issue issue closed by richard
JIRA issue issue closed by richard "Confirmed fixed"
JIRA issue issue closed by richard "This now works; just specify the path of the project dir instead of the parent of the project dir"
JIRA issue issue closed by richard "IE no longer has this issue; FF4 still has a semi-related one that doesn't seem to be our fault."
JIRA issue issue closed by richard
JIRA issue issue closed by richard "This seems to work fine and is in the 1.5.0 release."
FireBreathBot 03:04 JIRA issue issue created by schmoo
taxilian 09:04 jshanab_wcw: did you figure out your gitolite issue?
btw, for anyone who didn't spot it already, 1.5.0 is officially released:
jshanab_wcw 09:04 had to throw in the towel , gotta work on other bugs till next weekend. It is an ssh key issue, or rather my missunderstanding of the ssh-key issue. Got it working on linux, but not on windows
Git was to be in place before the update. otherwise the update is more painful. Right now i have a new bug "unhandled exception during user callback" debugging shows no callstack or one that has 100 user32.dll,ntdll and XUL things
taxilian 09:04 hmm. that's weird. you know that you can get the symbols to find out what those stacks are, right?
jshanab_wcw 09:04 I have discoevers refeneces twice to SFML. like "First-chance exception at 0x5ca92f99 (sfml-window-d-2.dll) in firefox.exe: 0xC00000FD: Stack overflow."
taxilian 09:04 ooh. stack overflows no good
jshanab_wcw 09:04 One reason i wanted to look at the updated examples of simple media player, sfml is not, well maybe ready for prime time
Same plugin in a jquery object is fine, only when i run it alone in a web page with no surounding jquery player does it crash. LOL
taxilian 09:04 ahh :-/
ooh.. jquery crash? any particular browser?
jshanab_wcw 09:04 NO, jquery not crashing at all
taxilian 10:04 oh, wait; misread
well, if you need help with your windows git issue I can probably help you'
it's most likely nothing significant
I have git working fine on windows, except for occasional oddities with line endings :-/
jshanab_wcw 10:04 OK, I will take you up on that later. I get unexpected disconnect on other end error in windows when I try and clone
taxilian 10:04 sounds like a key issue
jshanab_wcw 10:04 yeah, I think i just missunderstood the whole keys that you can log in with and keys you can't, very conflicting docs online. So I probably have multiple keys in the authorize file and need to just clear it out and start over.
taxilian 10:04 you shouldn't have touched the authorize file; gitolite manages all of that for you
jshanab_wcw 10:04 I saw somewhere that if you had ssh access that gave you command line already in the file that it can add a second one and ssh always takes the first it finds.
taxilian 10:04 yes; however, if you're using gitolite you don't touch the authorized_keys file yourself
it manages that for you
at least for the user gitolite is running as
jshanab_wcw 10:04 So do i need to have a gitolite user on the administrators workstation to have it's own .ssh directory and key or does each user have a key to the gitolite user with their own email and user in it?
taxilian 10:04 what I'm talking about only applies to the server
on the client it pulls the key from ~/.ssh/
sorry, id_rsa
not .pub
if you want to support multiple keys, you need to use pageant most likely
jshanab_wcw 10:04 I was creating a key on my workstatioin, coping the pub key to the server and putting it in the keydir. Except for my first key that I called gl-setup with
taxilian 10:04 wait; you put it directly in the keydir? or you cloned the gitolite-admin repo and put it in and then pushed?
jshanab_wcw 10:04 right, used ssh-copy-id, updateded the conf and commited and pushed.
taxilian 10:04 ok; never heard of ssh-copy-id, but sounds reasonable. Where did you store the private key on your local machine?
jshanab_wcw 10:04 I tried a little of everyting i am afraid and that is why i may of got things in a state I cannot recover from. When I have more time, like later tonight, i will play with it some more
private keys go in .ssh of user account. /home/jshanab/.ssh or c:\Users\jshanab\.ssh
taxilian 10:04 right; your private key should have been in C:\Users\jshanab\.ssh\id_rsa
jshanab_wcw 10:04 Hey where do events like window resize enter the plugin?
taxilian 10:04 you might want to make a github account and see if you can access that
look at your main Plugin object; you can either handle WindowsEvent and look for WM_RESIZE or handle ResizedEvent
jshanab_wcw 10:04 thanks. gitolite server is online, Maybe we could play with it later
taxilian 10:04 ok
you might want to try using github and make sure that it works correctly from your windows machine; that would tell you your key is set up right
jshanab_wcw 10:04 ok. I am a bit confused where in some places the doc says you must be able to do ssh [email protected] pwd and others wher it says this is wrong and must be able to do ssh [email protected] info. This last one comes back with an error, the key is trying to get me a shell :-(
taxilian 10:04 they key should not be trying to get you a shell
you should not have any shell access
not with [email protected]
jshanab_wcw 10:04 right. I believe that is my screwup and block
taxilian 10:04 ssh [email protected] info should work
sabotaged|wk 10:04 this is weird: i'm seeing some differences in drawing behavior between core animation and invalidating core animation
taxilian 10:04 sabotaged|wk: what kind of differences?
you're on 1.5, right?
sabotaged|wk 10:04 core animation is not drawing a rounded corner on my sublayer, while invalidating core animation is. also invalding core animation won't draw in my sublayer
just picked up latest changes
taxilian 10:04 good good. ICA works differently from CA; CA is much faster, but only on Safari
it's possible that something needs to be called to tell your sublayer to be rendered to your main CALayer
sabotaged|wk 10:04 yeah i noticed the performance was a lot better
in safari
taxilian 10:04 honestly you'd get better performance using CG, but ICA should be doable
sabotaged|wk 10:04 actually this is the reason i switched; CG was consuming a ton of CPU in CGContextDrawImage
call stack was a bunch of gl* stuff
taxilian 10:04 hmm. interesting
CG is ogl accelerated, but I do know that you can't really update CGImages and such, so texturing isn't as efficient
was that all browsers or just some?
sabotaged|wk 10:04 i guess it was mostly chrome that ate cpu
safari seemed ok
firefox4 i dont know whats going on it crashes right away for either model
cant figure out how to attach
maybe ill try adding a sleep at the start
ah good that works
ill make a note on wiki
taxilian 10:04 sabotaged|wk: how are you putting the object into the DOM on ff4?
sabotaged|wk 10:04 object tag probably? same was as the example
though looks like it's crashing in my code
taxilian 10:04 okay; there is a crash that I've seen on ff4 when injecting the tag dynamically in certain circumstances is all
I filed a bug with the ff4 team
FireBreathBot 11:04 JIRA issue issue updated by richard
sabotaged|wk 12:04 stuartmorgan, you around?
having problems with ICA: setting the contents of a sublayer doesnt seem to work. but the same code works for CA
stuartmorgan 12:04 Yes
taxilian: wait, what? CG faster than ICA?
That should definitely not be true
taxilian 12:04 well, ICA is relatively very slow
stuartmorgan 12:04 Relative to what?
taxilian 12:04 relative to CA on Safari or OGL w/ quickdraw on anything that supports it
perhaps I was just hoping that CG might be faster
stuartmorgan 12:04 That shouldn't be the case
taxilian 12:04 gotta run, though; bbl
it is. try the BasicMediaPlayer example and run it on all different browsers; compare
stuartmorgan 12:04 And if CG is faster than ICA then something is very very wrong
taxilian: slower meaning lower frame rate, higher CPU, what?
sabotaged|wk: details?
sabotaged|wk 12:04 i add a sublayer to the plugin's CALayer. on a timer i call setContents of the sublayer with a new CGImage. then i call InvalidateWindow
CA on safari/chrome works, the sublayer shows the image
same code for ICA: i don't see any image in the sublayer
i draw to the plugin's CALayer in a similar manner and it works. just not for sublayers
stuartmorgan 12:04 The only difference between CA and ICA in Chrome is whether a method is called on a timer or when you invalidate
What does 64-bit Firefox do?
sabotaged|wk 12:04 same behavior
as chrome for ICA
stuartmorgan 12:04 Sounds like a Firebreath bug then, or a bug in your plugin
If you call this over and over again do you ever see anything?
sabotaged|wk 12:04 at the start i set the sublayer's background color to black, and i see the sublayer
but never any image
stuartmorgan 12:04 I would guess either the browser is never actually getting an invalidate call, or your change is happening with an animation so hasn't actually happened yet when the browser draws
The latter should give you a one-image lag though, I would think
sabotaged|wk 12:04 hmm
let me try disabling the animation for setting contents, i had to do that on the plugin's CALayer
no difference
and removing the call to InvalidateWindow results in no image being shown at all, so i think that call is working
do i need to call setNeedsDisplay on the CALayer?
stuartmorgan 12:04 I don't remember offhand, you'd have to look at the CA docs
But again, the code for drawing from your vended layer is *identical* between CA and ICA in Chrome
The difference is entirely in when it happens. That's it
jshanab_wcw 13:04 taxillian. I have a crash that happens in npapi and not IE. In debugging it is a stack overflow on infinitly recieving paint messages after a resize request. However IE works flawless. Does this sound familiar?
taxilian 13:04 jshanab_wcw: no; don't think I've seen/heard of that before
jshanab_wcw 13:04 Well we have another prolem with events makeing it to the correct window in firefox only while using SFML, I am gonna try DirectX for windows and see if i can remove SFML
taxilian 13:04 stuartmorgan: slower meaning much lower framerate, even if we're invalidating at the same rate that we draw; same timer to draw both and it runs slower and choppier
firefox is just as bad
sabotaged|wk: it's possible that you need to call setNeedsDisplay on the child layer; FireBreath calls it on the parent automatically
but maybe Safari calls setNeedsDisplay on all children and Chrome/ff doesn't or something; there definitely seems to be a difference between how Safari renders CALayers and how Chrome/FF do
but I don't know the details
stuartmorgan 14:04 taxilian: but he said CA works in Chrome
taxilian: as for speed, are you comparing Safari CA to Chrome ICA, or Chrome CA to Chrome ICA?
taxilian 14:04 stuartmorgan: I thought he was saying Safari CA to Chrome ICA
and I'm comparing Chrome ICA to Safari CA speed-wise
stuartmorgan 14:04 So that doesn't necessarily translate to "ICA is slower than CA"
taxilian 14:04 ICA is slower than Safari, which is the only thing that actually supports CA (as opposed to hacking CA)
stuartmorgan 14:04 Huh?
"Hacking CA"?
Chrome and Firefox support CA, they just have to do more work to do it OOP
taxilian 14:04 you're not really supporting CA; you're doing your own timer to do ICA but without the plugins knowledge
stuartmorgan 14:04 We are supporting CA
taxilian 14:04 real CA would draw to the screen
stuartmorgan 14:04 I think you are conflating drawing modles and implementations
taxilian 14:04 there is no practical difference between how you support ICA and how you support CA except that ICA you can control the refresh rate
that's just the way I look at it =]
stuartmorgan 14:04 taxilian: but that's not what CA is
CA is a spec
taxilian 14:04 what Chrome supports as CA is not the same thing that Safari supports as CA
stuartmorgan 14:04 Firefox, Chrome, and Safari support it
taxilian 14:04 no; CA is a framework =]
stuartmorgan 14:04 If you are talking about the framework then nothing you are saying makes any sense
taxilian 14:04 how about this, then; Safari CA performs well, Firefox and Chrome CA both perform lousy =]
stuartmorgan 14:04 taxilian: that may be true; it doesn't sound like you've compared them though
taxilian 14:04 Safari CA and Chrome/Firefox CA/ICA? I have. I don't consider there to be a significant difference between ICA and CA on Firefox/chrome, since it draws the same way and I dont' see any performance improvement. ICA is slgihtly optimized, so I use that on Firefox/Chrome… and compared to Safari CA, it performs badly
stuartmorgan 14:04 So you've done a CA to ICA comparison in Firefox and Chrome then?
taxilian 14:04 mainly, though, based on what you have told me, I don't consider that Chrome and Firefox really support CA — you tell me that it shouldn't be used
stuartmorgan 14:04 I'm trying to understand what is actually slower, exactly
taxilian 14:04 no, I have done a CA Safari to ICA Firefox/Chrome
and a CA Safari to CA Firefox
we never did get CA Chrome to work right, but sounds like it doesn't matter
CA Safari works really really well; it's beautiful and smooth
ICA Chrome and ICA Firefox are jerky and slow
stuartmorgan 14:04 So what does "I don't consider there to be a significant difference between ICA and CA on Firefox/chrome, since it draws the same way and I dont' see any performance improvement." mean if you haven't compared them?
taxilian 14:04 it means that on the machines I'm testing on, 100x / second and 30x / second difference between how ICA and CA are working look identical
it is simply an observation that the implementation differences between CA on Chrome/FF4 and CA on Safari are such that I dont' consider them to be the same thing. I am talking about the Drawing Model, not the spec; Chrome supports CA, but not really; it really supports ICA and it fakes CA by providing an automatic invalidate timer
that's why I said it is not "real CA"
FireBreathBot 14:04 JIRA issue issue created by richard
stuartmorgan 14:04 taxilian: you are definitely conflating spec and implementation, which is why I had so much trouble following what you were saying
taxilian 14:04 sorry; I don't really care about the spec, I care about using it
as far as using it goes, CA Chrome and CA Safari are completely different
that's not intended as a criticism of your work; the model negotiation and everything is fine. it's a simple observation that the way that Chrome and Firefox implement CA/ICA does not perform well
stuartmorgan 14:04 I assume you also care about having them improve
And I'm trying to understand where exactly the problem is
taxilian 14:04 that's fair; I think the problem is likely just the way the backbuffer works, but I'm not an expert on graphics rendering. I can only tell you what I've tried
which is in the BasicMediaPlayer example
stuartmorgan 14:04 Do Flash, QuickTime, and Unity all behave badly on your test machine?
taxilian 14:04 when I say "badly" I'm not talking about a level of difference like between 30fps and 1fps, I'm talking more like 30fps to 15fps or so
so I'm not sure about Flash and Quicktime; I haven't tried them
I don't have anything to try them with
it's not something that makse things unusable; it's just noticable
I honestly don't know if it can even be fixed while doing the backbuffer/scan thing
might just be something we live with
stuartmorgan 14:04 scan?
taxilian 14:04 poor choice of words. I meant that it pulls the pixels from the buffer and copies them to wherever you're drawing
if I understand correctly
stuartmorgan 14:04 No, it doesn't
Unless you are talking about 10.5
taxilian 14:04 how does it work?
stuartmorgan 14:04 On 10.6 it draws the CALayer contents to an IOSurface, and then the browser in turn draws the IOSurface to the window with OpenGL. All GPU-backed
No readback
How are you measuring framerate with with plugin? The test page is static
taxilian 14:04 visual observation is all
it's a visible difference
you need to be on the right test page, though
!findfile test.html
FireBreathBot 14:04 Found 3 matching file(s) in the master branch. First 3 are:
taxilian 14:04
that'st he page I'm looking at; load it in Chrome, ff4, and safari
the CA version is animated
jshanab_wcw 14:04 How do include DirectX in my plugin
taxilian 14:04 jshanab_wcw: you mean the library? just add it with target_link_libraries
jshanab_wcw 14:04 Well, it is my first foray into directX, I downloaded the sdk, but the includes need to be in the projects
taxilian 14:04 !wiki libraries
FireBreathBot 14:04 8 results found. Note: Results limited to 8
"Using Libraries":
"Re: Feedback":
"Building on Mac OS X":
"FireBreath 1.5.0RC1 Released!":
"Documentation To-Do":
"Helpful Links":
"FireBreath 1.5.0 Released!":
jshanab_wcw 14:04 it has no trouble finding d3d9 but the d3dx9tex.h is a bit different
taxilian 14:04 you just need to add the include directories and the link libraries
jshanab_wcw 14:04 ok, got it
sabotaged|wk 14:04 RE: ICA not working for me. calling setNeedsDisplay on my sublayer has no effect. what's strange is there seems to be some difference in rendering between ICA and CA: setCornerRadius has no effect in CA
taxilian 14:04 there might even be a registry key that tells you where the dx stuff is installed that you could use
sabotaged|wk: you talking CA Chrome or CA Safari?
sabotaged|wk 14:04 both behave the same
jshanab_wcw 14:04 I just thought maybe it was handled like boost, you knw add_directx_library :-)
taxilian 14:04 hmm. that's really weird, then; CA Chrome and ICA Chrome should work the same
sabotaged|wk 14:04 just like firefox ICA and chrome ICA behave the same; they dont draw in my sublayer
but they both bevel the corner
taxilian 14:04 jshanab_wcw: if you want to add that functionality to FireBreath you're welcome to ;-)
that is probably a bug in the FireBreath pluginwindows, then
jshanab_wcw 14:04 In my spare time
taxilian 14:04 look at the CA window and the ICA window and see if you can figure out what is different
stuartmorgan 14:04 taxilian: I can't get the CA version of the media plugin from the 1.5 tree to work in any browser
taxilian 14:04 let me try again
sabotaged|wk 14:04 i'm pretty naive about core animation but why does firebreath care about sublayers?
taxilian 14:04 it doesn't; there must be something else
sabotaged|wk 14:04 hmm
taxilian 14:04 possibly in the invalidating code
stuartmorgan 14:04 taxilian: FWIW, this test page will hit a plugin bug in Chrome related to the background; that could be related to the framerate problems you see
I'd check, if I could make it work at all...
taxilian 14:04 stuartmorgan: huh; it was working last time I checked =] you're right, though, not working now
well, I'll have to look at it later
that's really strange
I'll let you know when I have it up again
FireBreathBot 14:04 Commit e7e2c08 on firebreath-1.5 by Richard Bateman: "FIREBREATH-45 Fixed callMultipleFunctions to be async"
Commit e7e2c08 on master by Richard Bateman: "FIREBREATH-45 Fixed callMultipleFunctions to be async"
sabotaged|wk 14:04 okay i think i found the line responsible for sublayer drawing not working
taxilian 14:04 whats that?
sabotaged|wk 14:04 ugh synergy+ copy paste busted again
[[mlayer sublayers] makeObjectsPerformSelector
i noticed in my code when i tried to call setNeedsDisplay on the plugin's CALayer, i got a black screen
taxilian 14:04 !findfile
FireBreathBot 14:04 Found 1 matching file(s) in the master branch. First 1 are:
sabotaged|wk 14:04 this seems similar
at least on 10.6, havent even tried any of this on 10.5 yet
taxilian 14:04 hmm. I don't know why that would break anything; I don't know CA APIs well, though
try changing it and see what happens
sabotaged|wk 14:04 i did, it works
taxilian 14:04 really? that's weird
sabotaged|wk 14:04 i can see content of my sublayer
taxilian 14:04 what did you change it to?
sabotaged|wk 14:04 just commented it out
taxilian 14:04 hmm. I think setNeedsDisplay should call something on the CALayer to tell it to draw
so maybe it's calling that, it does nothing, so that blacks it out
stuartmorgan 15:04 taxilian: setNeedsDisplay shouldn't be used on layers that are getting data from having |contents| set
You *either* implement a drawing callback (delegation or subclassing) and call setNeedsDisplay when you want to draw, *or* set contents
taxilian 15:04 hmm. we need to figure out how to abstract this properly so that either can be used
maybe a flag? dunno
I'm open to reasonable suggestions
I really wish I knew this stuff better :-/ I need to find a project that will require me to learn to use CA properly :-P
stuartmorgan 15:04 Why does the framework do this at all?
taxilian 15:04 probably because the guy who wrote it needed it to
why specifically I don't know
I'm sure he had a reason, though
stuartmorgan 15:04 vs the individual plugin code being responsible for calling it
taxilian 15:04 =]
I believe he uses the timer on the pluginwindow to do the render loop, so it calls both invalidate and setNeedsDisplay, I guess
sabotaged|wk 15:04 now more fun problems: for both CA and ICA, firefox4 draws a white box the size of my sublayer, mirrored on the x-axis
taxilian 15:04 sabotaged|wk: call setDisplayOnInvalidate(false) and it'll fix that issue you were having
I'm blind; didn't even notice that was there
sabotaged|wk 15:04 oh really? sweet
wait which issue
taxilian 15:04 your black box issue that you had to change code for
sabotaged|wk 15:04 oh ok
sabotaged|wk 15:04 for the record it seems like my white box issue on firefox was caused by setting the background color of my sublayer. weird
taxilian 15:04 huh
sabotaged|wk 15:04 i have no freaking idea. only showed up on firefox
applejuice 16:04 hello
taxilian 16:04 hello
applejuice 16:04 I just have a quick question.
I changed the directory of FB and called prep2008 again in the changed location.
taxilian 16:04 delete your build directory and try again
applejuice 16:04 It compiles fine, but when I attach the VC to Firefox, the break points are not hitting.
taxilian 16:04 did you regsvr32 it again?
applejuice 16:04 I will try with deleting the build directory.
taxilian 16:04 if the breakpoints aren't hitting then it's loading the wrong binary
there are a lot of reasons
applejuice 16:04 what is it?
taxilian 16:04 but I would definitely try deleting the build directory if you haven't; I'm surprised that the prep script even finished for you
applejuice 16:04 okay I will try it now
Do you mean I have to delete all files in fbbuild?
but I have projects directory there
taxilian 16:04 when you run the prep script, you give it a build dir, right? is that fbbuild?
applejuice 16:04 yes
oh nvm I can delete it
taxilian 16:04 right; nothing in there should have been changed manually; you should change your cmake files and it regenerates the build dir whenever
applejuice 16:04 no it does not.
I cleared fbbuild and redo prep2008.
But still not loading the dll
I mean, the plugin is working but not debuggable
taxilian 16:04 what browser?
applejuice 16:04 firefox
taxilian 16:04 version?
applejuice 16:04 3.6.15
taxilian 16:04 is there a plugin-container.exe process running when the plugin is loaded?
applejuice 16:04 do you check that in windows task manager?
taxilian 16:04 yes
applejuice 16:04 no
taxilian 16:04 hmm. well, the reason visual studio isn't hitting breakpoints (assuming you correctly attached to the firefox process) is that it can't find debug symbols for the version of the DLL that is loading
usually that's because the version being loaded is not what you think is being loaded
check about:plugins and make sure the filename is correct
then try deleting the .dll and make sure the plugin doesn't load
then build it again and see if it starts loading again
if that all still doesn't work, the next thing I'd try is rebooting the computer
and then I'm out of ideas =]
applejuice 16:04 If you reboot, what can help you?
taxilian 16:04 I don't really know, but if I were to speculate I'd say that maybe windows didn't unload something properly
I just know I've had that issue before and had rebooting seem to fix it
applejuice 16:04 taxilian,
if you regsvr32 then delete the file, it won't get loaded?
taxilian 16:04 correct
applejuice 16:04 it seems like after deletion, the plugin is still working
taxilian 16:04 well, that tells you something
it's loading a different file than you expect
applejuice 16:04 why? i did regsvr
taxilian 16:04 I don't konw. have you completely closed the browser and launched it again? sometimes the browser gets "stuck"
do about:plugins in firefox
it should tell you the filename of the file it's loading
and path
applejuice 16:04 it does not tell the path
taxilian 16:04 hmm. sure enough
well, you could look in the registry
that's where it registers it
when you called regsvr32 are you sure it said it was successful?
applejuice 16:04 Yes. It seems like it is loading the right file because after changing the name and loading says it.
taxilian 16:04 but you said you deleted the file and it still loaded the plugin?
applejuice 16:04 Yes that happened too
taxilian 16:04 well, try it again; 'cause if you have actually deleted the file and it loads it, then you have another plugin somewhere that it's using
applejuice 16:04 kk I will be back need to off this chat
appejuice 16:04 taxilian, do you know where in Regedit you could see that?
taxilian 16:04 yes; in HKCU/Software/MozillaPlugins
appejuice 16:04 Yes, I deleted the file but still loading.
It means somewhere in my computer it is ultimately loaded right,?
I think I need to reboot my computer.
taxilian 16:04 that won't help
windows doesn't let you delete files that are in use
so it's still there
you need to find it
probably in the old location, is my guess
did you copy it into firefox/plugins by chance?
that's another common mistake people make sometimes
appejuice 16:04 no
But it is the file specified in regedit
that I deleted
taxilian 16:04 hmm. well, you could try rebooting
couldn't hurt
windows is weird sometimes
appejuice 16:04 okay thanks for your help!