void DisplayGroupManager::addContentWindowManager(ContentWindowManagerPtr contentWindowManager, DisplayGroupInterface * source)
{
    DisplayGroupInterface::addContentWindowManager(contentWindowManager, source);

    if(source != this)
    {
        // set display group in content window manager object
        contentWindowManager->setDisplayGroupManager(shared_from_this());

        sendDisplayGroup();

        if (contentWindowManager->getContent()->getType() != CONTENT_TYPE_PIXEL_STREAM)
        {
            // TODO initialize all content dimensions on creation so we can remove this procedure
            // make sure we have its dimensions so we can constrain its aspect ratio
            sendContentsDimensionsRequest();
        }
    }
}
void DisplayGroupManager::removeContentWindowManager(ContentWindowManagerPtr contentWindowManager, DisplayGroupInterface * source)
{
    DisplayGroupInterface::removeContentWindowManager(contentWindowManager, source);

    if(source != this)
    {
        // Notify the (local) pixel stream source of the deletion of the window so the source can be removed too
        if (contentWindowManager->getContent()->getType() == CONTENT_TYPE_PIXEL_STREAM)
        {
            const QString& uri = contentWindowManager->getContent()->getURI();
            closePixelStream(uri);
            emit(pixelStreamViewClosed(uri));
        }

        // set null display group in content window manager object
        contentWindowManager->setDisplayGroupManager(DisplayGroupManagerPtr());

        sendDisplayGroup();
    }
}