static void load_status_cb (GObject* object, GParamSpec* pspec, gpointer data) { WebKitDOMDocument *document; WebKitWebView *web_view; WebKitLoadStatus status; Ctx *ctx; gulong count; gint64 now, elapsed; ctx = (Ctx *) data; web_view = WEBKIT_WEB_VIEW(object); status = webkit_web_view_get_load_status(web_view); if (status != WEBKIT_LOAD_FINISHED) { return; } /* We now know that the document has been loaded */ g_main_loop_quit(ctx->loop); now = g_get_monotonic_time(); printf("Document loaded in %lldms\n", TO_MS(now - (ctx->start_time))); document = webkit_web_view_get_dom_document(web_view); count = walk_dom(WEBKIT_DOM_NODE(document)); elapsed = g_get_monotonic_time() - now; printf("Document has %ld nodes and took %lldms to walk\n", count, TO_MS(elapsed)); }
/* * ---------------------------------------------------------------------------- * * DevGraphicsInit -- * * Initialize the mouse and the screen. * * Results: * None. * * Side effects: * The world is initialized. * * ---------------------------------------------------------------------------- */ void DevGraphicsInit() { Time time; int i; int slot; Mach_SlotInfo slotInfo; ReturnStatus status; char *slotAddr; DisplayInfo *displayInfoPtr = (DisplayInfo *) NIL; Sync_SemInitDynamic(&graphicsMutex, "graphicsMutex"); for (i = 0; i < numConfigDisplays; i++) { displayInfoPtr = &configDisplays[i]; for (slot = 0; slot < 3; slot++) { slotAddr = (char *) MACH_IO_SLOT_ADDR(slot); status = Mach_GetSlotInfo(slotAddr + displayInfoPtr->romOffset, &slotInfo); if (status == SUCCESS) { if ((!strcmp(slotInfo.vendor, displayInfoPtr->vendor)) && (!strcmp(slotInfo.module, displayInfoPtr->module))) { displayType = displayInfoPtr->type; break; } } } if (displayType != UNKNOWN) { break; } } switch (displayType) { case UNKNOWN : Mach_MonPrintf( "Assuming you have one of those fancy graphics displays.\n"); displayType = PMAGDA; break; case PMAGBA: Mach_MonPrintf("Color frame buffer in slot %d, (%s %s %s %s)\n", slot, slotInfo.module, slotInfo.vendor, slotInfo.revision, slotInfo.type); break; } if (displayType == PMAGBA) { ramdac.addrLowPtr = (unsigned char *) (slotAddr + PMAGBA_RAMDAC_OFFSET); ramdac.addrHighPtr = (unsigned char *) (slotAddr + PMAGBA_RAMDAC_OFFSET + 0x4); ramdac.regPtr = (unsigned char *) (slotAddr + PMAGBA_RAMDAC_OFFSET + 0x8); ramdac.colorMap = (unsigned char *) (slotAddr + PMAGBA_RAMDAC_OFFSET + 0xc); /* * Initialize screen info. */ scrInfoPtr = (DevScreenInfo *) MACH_UNCACHED_ADDR(&scrInfoCached); events = (DevEvent *) MACH_UNCACHED_ADDR(eventsCached); tcs = (DevTimeCoord *) MACH_UNCACHED_ADDR(tcsCached); InitScreenDefaults(scrInfoPtr); scrInfoPtr->eventQueue.events = events; scrInfoPtr->eventQueue.tcs = tcs; frameBuffer = (char *) (slotAddr + PMAGBA_BUFFER_OFFSET); scrInfoPtr->bitmap = (char *) frameBuffer; scrInfoPtr->cursorBits = (short *)(cursorBits); Timer_GetRealTimeOfDay(&time, (int *) NIL, (Boolean *) NIL); scrInfoPtr->eventQueue.timestampMS = TO_MS(time); scrInfoPtr->eventQueue.eSize = DEV_MAXEVQ; scrInfoPtr->eventQueue.eHead = scrInfoPtr->eventQueue.eTail = 0; scrInfoPtr->eventQueue.tcSize = MOTION_BUFFER_SIZE; scrInfoPtr->eventQueue.tcNext = 0; /* * Initialize the color map, and the screen, and the mouse. */ InitColorMap(); ScreenInit(); } MouseInit(); Scroll(); /* * Init the "latest mouse report" structure */ lastRep.state = 0; lastRep.dx = 0; lastRep.dy = 0; lastRep.byteCount = 0; /* * Reset the keyboard. */ if(!inKBDReset) { KBDReset(); } if (displayType == PMAGBA) { /* * Clear any pending video interrupts. */ * ((int *) (slotAddr + PMAGBA_IREQ_OFFSET)) = 1; } initialized = TRUE; bzero((char *) debugArray, sizeof(debugArray)); }