|
From: CVS C. to T. <the...@li...> - 2011-01-16 16:16:23
|
Revision: 614
http://themis.svn.sourceforge.net/themis/?rev=614&view=rev
Author: mark_hellegers
Date: 2011-01-16 16:16:14 +0000 (Sun, 16 Jan 2011)
Log Message:
-----------
- Now passing the renderview pointer using a BaseEntry.
- Removed the RENDERVIEW_POINTER message and just used the existing SH_RENDER_FINISHED message.
- Cleaned up the code a bit.
Modified Paths:
--------------
trunk/themis/common/commondefs.h
trunk/themis/framework/win.cpp
trunk/themis/modules/Renderer/TRenderer.cpp
trunk/themis/modules/Renderer/TRenderer.h
trunk/themis/modules/Renderer/TRendererEngine.cpp
Modified: trunk/themis/common/commondefs.h
===================================================================
--- trunk/themis/common/commondefs.h 2011-01-16 15:01:15 UTC (rev 613)
+++ trunk/themis/common/commondefs.h 2011-01-16 16:16:14 UTC (rev 614)
@@ -207,10 +207,6 @@
#define HTTP_DELETE_REQUEST 'dele'
#define HTTP_HEAD_REQUEST 'head'
-// Renderer message constants
-// Only renderer plugins should send these.
-#define RENDERVIEW_POINTER 'rwpr'
-
//union int32torgb
//{
// int32 value;
Modified: trunk/themis/framework/win.cpp
===================================================================
--- trunk/themis/framework/win.cpp 2011-01-16 15:01:15 UTC (rev 613)
+++ trunk/themis/framework/win.cpp 2011-01-16 16:16:14 UTC (rev 614)
@@ -936,32 +936,42 @@
switch (command) {
case COMMAND_INFO: {
switch (message->what) {
- case RENDERVIEW_POINTER: {
+ case SH_RENDER_FINISHED: {
int32 site_id = 0;
message->FindInt32("site_id", &site_id);
if (site_id != 0) {
int32 tabindex;
ThemisTab * tab = FindTabFor(site_id, &tabindex);
if (tab != NULL) {
- BView * renderview = NULL;
- message->FindPointer("renderview_pointer", (void**)&renderview);
- if (renderview != NULL) {
- /* Attach the renderview to the correct tab. */
- Lock();
- /*
- * We don't need to resize the renderview here, as this is done in
- * ThemisTabView::Select().
- */
- tabview->TabAt(tabindex)->SetView(renderview);
-
- if (tabview->Selection() == tabindex) {
- tabview->Select(tabindex);
-
- if (CurrentFocus() != NULL)
- CurrentFocus()->MakeFocus(false);
- tabview->TabAt(tabindex)->View()->MakeFocus(true);
+ SiteHandler * sh = ((App *)be_app)->GetSiteHandler();
+ if (sh) {
+ SiteEntry * site = sh->GetEntry(site_id);
+ int32 viewId = 0;
+ message->FindInt32("view_id", &viewId);
+ if (viewId != 0) {
+ BaseEntry * entry = site->getEntry(viewId);
+ if (entry != NULL) {
+ BView * renderview = (BView *) entry->getPointer("render_view");
+ if (renderview != NULL) {
+ /* Attach the renderview to the correct tab. */
+ Lock();
+ /*
+ * We don't need to resize the renderview here, as this is done in
+ * ThemisTabView::Select().
+ */
+ tabview->TabAt(tabindex)->SetView(renderview);
+
+ if (tabview->Selection() == tabindex) {
+ tabview->Select(tabindex);
+
+ if (CurrentFocus() != NULL)
+ CurrentFocus()->MakeFocus(false);
+ tabview->TabAt(tabindex)->View()->MakeFocus(true);
+ }
+ Unlock();
+ }
+ }
}
- Unlock();
}
}
}
Modified: trunk/themis/modules/Renderer/TRenderer.cpp
===================================================================
--- trunk/themis/modules/Renderer/TRenderer.cpp 2011-01-16 15:01:15 UTC (rev 613)
+++ trunk/themis/modules/Renderer/TRenderer.cpp 2011-01-16 16:16:14 UTC (rev 614)
@@ -133,12 +133,16 @@
BString typeOfDocument;
message->FindString("type", &typeOfDocument);
if (typeOfDocument == "dom") {
- int32 siteId = message->FindInt32("site_id");
+ int32 siteId = 0;
+ message->FindInt32("site_id", &siteId);
SiteEntry * site = ((App *)be_app)->GetSiteHandler()->GetEntry(siteId);
if (site != NULL) {
- int32 domId = message->FindInt32("dom_id");
+ int32 domId = 0;
+ message->FindInt32("dom_id", &domId);
DOMEntry * entry = (DOMEntry *) site->getEntry(domId);
if (entry != NULL) {
+ int32 urlId = 0;
+ message->FindInt32("url_id", &urlId);
TDocumentPtr document = entry->getDocument();
DOMTrees.push_back(document);
//Start Processing in a new thread
@@ -147,7 +151,8 @@
param->document = document;
param->renderer = this;
param->siteID = siteId;
- param->urlID = message->FindInt32("url_id");
+ param->urlID = urlId;
+ param->domID = domId;
//feeding the random generator
srand(time(NULL));
thread_id id = spawn_thread(PreProcess,THREAD_NAME[rand()%THREAD_NAMES],30,(void *)param);
Modified: trunk/themis/modules/Renderer/TRenderer.h
===================================================================
--- trunk/themis/modules/Renderer/TRenderer.h 2011-01-16 15:01:15 UTC (rev 613)
+++ trunk/themis/modules/Renderer/TRenderer.h 2011-01-16 16:16:14 UTC (rev 614)
@@ -59,6 +59,7 @@
Renderer *renderer;
int32 siteID;
int32 urlID;
+ int32 domID;
};
struct processing_context {
@@ -100,8 +101,6 @@
BList UITrees;
vector <TDocumentPtr> DOMTrees;
- void BroadcastPointer(TRenderView *view);
-
//Below spreads the dark land of Processing methods.
//Because it's a thread_func it has to be static int32 with a single void param
Modified: trunk/themis/modules/Renderer/TRendererEngine.cpp
===================================================================
--- trunk/themis/modules/Renderer/TRendererEngine.cpp 2011-01-16 15:01:15 UTC (rev 613)
+++ trunk/themis/modules/Renderer/TRendererEngine.cpp 2011-01-16 16:16:14 UTC (rev 614)
@@ -29,6 +29,11 @@
#include <Alert.h>
#include <Screen.h>
+// Themis headers
+#include "framework/app.h"
+#include "framework/SiteHandler.h"
+#include "BaseEntry.hpp"
+
//General
#include "CSS_HTM.h"
#include "CSS_Units.h"
@@ -41,16 +46,6 @@
#define GET_ATTRIBUTE_VALUE(attribute,default_value) (attribute.get() != NULL) ? attribute->getNodeValue().c_str() : default_value;
-void Renderer::BroadcastPointer(TRenderView *view)
-{
- //Do the Broadcasting
- BMessage message(RENDERVIEW_POINTER);
- message.AddInt32("command",COMMAND_INFO);
- message.AddString("type","TRenderView");
- message.AddPointer("data_pointer",view);
- Broadcast(MS_TARGET_ALL,&message);
-}
-
int32 Renderer::PreProcess(void *data)
{
preprocess_thread_param *cdata = (preprocess_thread_param *)data;
@@ -89,27 +84,27 @@
//Save the BMessenger to userIntterface
//view->userInterface = userInterface;
- //Do the Broadcasting to give the view to the UI
- BMessage *message = new BMessage(RENDERVIEW_POINTER);
- message->AddInt32("command",COMMAND_INFO);
- message->AddInt32("site_id",view->siteID);
- message->AddInt32("url_id",view->urlID);
- message->AddPointer("renderview_pointer",(void *)view);
- cdata->renderer->Broadcast(MS_TARGET_ALL,message);
-
//Start processing the DOM Tree
printf("RENDERER: START PROCESSING...\n");
processing_context context;
bigtime_t time = real_time_clock_usecs();
cdata->renderer->Process(cdata->document,view,context);
printf("RENDERER: DONE PROCESSING in %lld microseconds.\n",real_time_clock_usecs() - time);
-
- //Do the Broadcasting to say we are done rendering
- message->what = SH_RENDER_FINISHED;
- message->RemoveName("renderview_pointer");
- cdata->renderer->Broadcast(MS_TARGET_SITEHANDLER,message);
-
+ /* Get an unique ID from the app for the DOM entry */
+ int32 viewId = ((App *)be_app)->GetNewID();
+ BaseEntry * entry = new BaseEntry(viewId);
+ entry->set("render_view", (void *) view);
+ ((App *)be_app)->GetSiteHandler()->AddEntry(entry, view->siteID, cdata->domID);
+
+ //Do the Broadcasting to give the view to the UI
+ BMessage *message = new BMessage(SH_RENDER_FINISHED);
+ message->AddInt32("command",COMMAND_INFO);
+ message->AddInt32("site_id",view->siteID);
+ message->AddInt32("url_id",view->urlID);
+ message->AddInt32("view_id",viewId);
+ cdata->renderer->Broadcast(MS_TARGET_ALL,message);
+
//Update the view
//cdata->view->Invalidate();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|