Changeset 22412 in vbox for trunk/src/VBox/Main/DisplayImpl.cpp
- Timestamp:
- Aug 24, 2009 1:02:40 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 51391
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/DisplayImpl.cpp
r22277 r22412 213 213 memset (&maFramebuffers[ul].dirtyRect, 0 , sizeof (maFramebuffers[ul].dirtyRect)); 214 214 memset (&maFramebuffers[ul].pendingResize, 0 , sizeof (maFramebuffers[ul].pendingResize)); 215 #ifdef VBOX_WITH_HGSMI 216 maFramebuffers[ul].fVBVAEnabled = false; 217 #endif /* VBOX_WITH_HGSMI */ 215 218 } 216 219 … … 582 585 pFramebuffer->Unlock(); 583 586 587 #ifndef VBOX_WITH_HGSMI 584 588 if (!mfVideoAccelEnabled) 585 589 { 590 #else 591 if (!mfVideoAccelEnabled && !maFramebuffers[uScreenId].fVBVAEnabled) 592 { 593 LogFlowFunc(("HGSMI: VRDP update without VBVA.\n")); 594 #endif /* VBOX_WITH_HGSMI */ 586 595 /* When VBVA is enabled, the VRDP server is informed in the VideoAccelFlush. 587 596 * Inform the server here only if VBVA is disabled. … … 2376 2385 #endif 2377 2386 2387 #ifdef VBOX_WITH_HGSMI 2388 DECLCALLBACK(int) Display::displayVBVAEnable(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId) 2389 { 2390 LogFlowFunc(("uScreenId %d\n", uScreenId)); 2391 2392 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); 2393 Display *pThis = pDrv->pDisplay; 2394 2395 pThis->maFramebuffers[uScreenId].fVBVAEnabled = true; 2396 2397 return VINF_SUCCESS; 2398 } 2399 2400 DECLCALLBACK(void) Display::displayVBVADisable(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId) 2401 { 2402 LogFlowFunc(("uScreenId %d\n", uScreenId)); 2403 2404 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); 2405 Display *pThis = pDrv->pDisplay; 2406 2407 pThis->maFramebuffers[uScreenId].fVBVAEnabled = false; 2408 } 2409 2410 DECLCALLBACK(void) Display::displayVBVAUpdateBegin(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId) 2411 { 2412 LogFlowFunc(("uScreenId %d\n", uScreenId)); 2413 2414 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); 2415 Display *pThis = pDrv->pDisplay; 2416 2417 NOREF(uScreenId); 2418 } 2419 2420 DECLCALLBACK(void) Display::displayVBVAUpdateProcess(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId, const PVBVACMDHDR pCmd, size_t cbCmd) 2421 { 2422 LogFlowFunc(("uScreenId %d pCmd %p cbCmd %d\n", uScreenId, pCmd, cbCmd)); 2423 2424 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); 2425 Display *pThis = pDrv->pDisplay; 2426 2427 pThis->mParent->consoleVRDPServer()->SendUpdate (uScreenId, pCmd, cbCmd); 2428 } 2429 2430 DECLCALLBACK(void) Display::displayVBVAUpdateEnd(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId, uint32_t x, uint32_t y, uint32_t cx, uint32_t cy) 2431 { 2432 LogFlowFunc(("uScreenId %d %d,%d %dx%d\n", uScreenId, x, y, cx, cy)); 2433 2434 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); 2435 Display *pThis = pDrv->pDisplay; 2436 2437 /* @todo handleFramebufferUpdate (uScreenId, 2438 * x - pThis->maFramebuffers[uScreenId].xOrigin, 2439 * y - pThis->maFramebuffers[uScreenId].yOrigin, 2440 * cx, cy); 2441 */ 2442 pThis->handleDisplayUpdate(x, y, cx, cy); 2443 } 2444 2445 DECLCALLBACK(int) Display::displayVBVAResize(PPDMIDISPLAYCONNECTOR pInterface, const PVBVAINFOVIEW pView, const PVBVAINFOSCREEN pScreen, void *pvVRAM) 2446 { 2447 LogFlowFunc(("pScreen %p, pvVRAM %p\n", pScreen, pvVRAM)); 2448 2449 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); 2450 Display *pThis = pDrv->pDisplay; 2451 2452 DISPLAYFBINFO *pFBInfo = &pThis->maFramebuffers[pScreen->u32ViewIndex]; 2453 2454 pFBInfo->u32Offset = pView->u32ViewOffset; /* Not used in HGSMI. */ 2455 pFBInfo->u32MaxFramebufferSize = pView->u32MaxScreenSize; /* Not used in HGSMI. */ 2456 pFBInfo->u32InformationSize = 0; /* Not used in HGSMI. */ 2457 2458 pFBInfo->xOrigin = pScreen->i32OriginX; 2459 pFBInfo->yOrigin = pScreen->i32OriginY; 2460 2461 pFBInfo->w = pScreen->u32Width; 2462 pFBInfo->h = pScreen->u32Height; 2463 2464 return pThis->handleDisplayResize(pScreen->u32ViewIndex, pScreen->u16BitsPerPixel, 2465 (uint8_t *)pvVRAM + pScreen->u32StartOffset, 2466 pScreen->u32LineSize, pScreen->u32Width, pScreen->u32Height); 2467 } 2468 2469 DECLCALLBACK(int) Display::displayVBVAMousePointerShape(PPDMIDISPLAYCONNECTOR pInterface, bool fVisible, bool fAlpha, 2470 uint32_t xHot, uint32_t yHot, 2471 uint32_t cx, uint32_t cy, 2472 const void *pvShape) 2473 { 2474 LogFlowFunc(("\n")); 2475 2476 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); 2477 Display *pThis = pDrv->pDisplay; 2478 2479 /* Tell the console about it */ 2480 pDrv->pDisplay->mParent->onMousePointerShapeChange(fVisible, fAlpha, 2481 xHot, yHot, cx, cy, (void *)pvShape); 2482 2483 return VINF_SUCCESS; 2484 } 2485 #endif /* VBOX_WITH_HGSMI */ 2486 2378 2487 /** 2379 2488 * Queries an interface to the driver. … … 2458 2567 pData->Connector.pfnVHWACommandProcess = Display::displayVHWACommandProcess; 2459 2568 #endif 2569 #ifdef VBOX_WITH_HGSMI 2570 pData->Connector.pfnVBVAEnable = Display::displayVBVAEnable; 2571 pData->Connector.pfnVBVADisable = Display::displayVBVADisable; 2572 pData->Connector.pfnVBVAUpdateBegin = Display::displayVBVAUpdateBegin; 2573 pData->Connector.pfnVBVAUpdateProcess = Display::displayVBVAUpdateProcess; 2574 pData->Connector.pfnVBVAUpdateEnd = Display::displayVBVAUpdateEnd; 2575 pData->Connector.pfnVBVAResize = Display::displayVBVAResize; 2576 pData->Connector.pfnVBVAMousePointerShape = Display::displayVBVAMousePointerShape; 2577 #endif 2578 2460 2579 2461 2580 /*
Note:
See TracChangeset
for help on using the changeset viewer.