static MoonWindow* create_window (Deployment *deployment, const char *app_id) { MoonAppRecord *app; OutOfBrowserSettings *oob; MoonWindow *moon_window; Surface *surface; /* fetch the app record */ if (!(app = installer->GetAppRecord (app_id))) { g_warning ("Could not find application: %s", app_id); return NULL; } /* create the moonlight widget */ moon_window = winsys->CreateWindow (MoonWindowType_Desktop, 0, 0); surface = new Surface (moon_window); surface->EnsureManagedPeer (); deployment->SetSurface (surface); moon_window->SetSurface (surface); setup_app (deployment, installer->GetBaseInstallDir (), app); surface->AddXamlHandler (Surface::ErrorEvent, error_handler, NULL); surface->unref (); /* load the xap */ if (!deployment->InitializeManagedDeployment (NULL, NULL, NULL)) { surface->unref (); return NULL; } if ((oob = deployment->GetOutOfBrowserSettings ())) load_window_icons (moon_window, deployment, oob->GetIcons ()); delete app; return moon_window; }
static MoonWindow* create_window (Deployment *deployment, const char *app_id) { MoonAppRecord *app; OutOfBrowserSettings *oob; WindowSettings *settings; MoonWindow *moon_window; Surface *surface; /* fetch the app record */ if (!(app = installer->GetAppRecord (app_id))) { g_warning ("Could not find application: %s", app_id); return NULL; } /* create the moonlight widget */ moon_window = winsys->CreateWindow (MoonWindowType_Desktop, 0, 0); surface = new Surface (moon_window); deployment->SetSurface (surface); moon_window->SetSurface (surface); if (!load_app (deployment, installer->GetBaseInstallDir (), app)) return NULL; surface->AddXamlHandler (Surface::ErrorEvent, error_handler, NULL); if ((oob = deployment->GetOutOfBrowserSettings ())) { load_window_icons (moon_window, deployment, oob->GetIcons ()); settings = oob->GetWindowSettings (); } else settings = NULL; if (settings != NULL) { Uri *uri; const char *hostname = NULL; uri = Uri::Create (app->origin); if (uri != NULL) hostname = uri->GetHost (); if (!hostname || !*hostname) hostname = "localhost"; char *window_title = g_strdup_printf ("%s - %s", settings->GetTitle(), hostname); delete uri; moon_window->SetTitle (window_title); g_free (window_title); moon_window->Resize (settings->GetWidth (), settings->GetHeight()); if (settings->GetWindowStartupLocation () == WindowStartupLocationManual) { // FIXME: this should really use a MoonWindow::Move moon_window->SetLeft (settings->GetLeft ()); moon_window->SetTop (settings->GetTop ()); } moon_window->SetStyle (settings->GetWindowStyle ()); } else if (oob != NULL) { moon_window->SetTitle (oob->GetShortName ()); } else { moon_window->SetTitle ("Moonlight"); } delete app; return moon_window; }