Hi Yako, still me... lets join forces, maybe someone hear us (nobody
answered my similar question 3 weeks ago).
Right now, after reading THIS thread:
I understood that THIS is important:
this should fix the HELL of a problems I have with strings and
linkage... but I hope that everything I used (apart from string) was
not moved into internals because I digged quite deep in FF code to do
what we are doing.
Also, THIS seems to be interesting (also cited in the thread above) :
For everything else, I mean the REAL RenderOffscreen problem, I hope
someone will send some snippet... they also moved to Cairo, so no more
"internal" rendering context... I believe the code must be changed
quite a lot.
You know? I will check Google Chrome code VERY SOON... :)
I managed to get to the pixels. Here cometh the snippet. DISCLAIMER:
this works for me, and it's probably still buggy. I still have to
understand if and where I have to use smart pointers, and I know never
free memory, and a lot of other stuff that must be fixed. All I know
is that "textureBuffer" points to a memory zone that I can
subsequently render in a OpenGL texture, so I can tell it works.
nsresult rv = mWebBrowser-
assert(NS_SUCCEEDED(rv) && domWindow);
context = do_CreateInstance("@mozilla.org/content/canvas-rendering-
assert(NS_SUCCEEDED(rv) && context);
domCanvas = do_QueryInterface(context, &rv);
assert(NS_SUCCEEDED(rv) && domCanvas);
rv = domCanvas->DrawWindow(domWindow, 0, 0, 512, 512,
gfxASurface* DOMRenderedSurface = NULL;
rv = context->GetThebesSurface(&DOMRenderedSurface);
assert (NS_SUCCEEDED(rv) && DOMRenderedSurface);
nsRefPtr<gfxImageSurface> imgSurface = new
gfxContext* dcontext = new gfxContext(imgSurface);
PRUint32* imageData = (PRUint32*)imgSurface->Data();
textureBuffer = (char*) imageData;
I used to set the widgetDamageRectInPixels coordinates in nsViewManager
before use it in CopyOffScreenBits, how can I do it on the new architecture?
It used to be something like:
widgetDamageRectInPixels.x = valueX;
widgetDamageRectInPixels.y = valueY;
localcx->CopyOffScreenBits(ds, 0, 0, widgetDamageRectInPixels,
Can you help me?
Thanks in advance,