diff -ur cosmoe/appserver/desktop.cpp cosmoe_jc/appserver/desktop.cpp --- cosmoe/appserver/desktop.cpp Mon Jul 1 00:22:59 2002 +++ cosmoe_jc/appserver/desktop.cpp Thu Jul 18 21:44:01 2002 @@ -213,7 +213,7 @@ { dbprintf( "Error: Display driver don't list any screenmodes. Check that your gfx-adapter supports Vesa2.0\n" ); dbprintf( "Terminate application server...\n" ); - exit( 1 ); + return ( false ); } std::sort( cModes.begin(), cModes.end(), ModeCmp() ); // Find the mode closest to 640x480 @@ -269,7 +269,7 @@ { dbprintf( "Error: All screenmodes failed. Game over!\n" ); dbprintf( "Terminate application server...\n" ); - exit( 1 ); + return ( false ); } g_pcScreenBitmap->m_nWidth = g_pcDispDrv->GetHorizontalRes(); @@ -626,10 +626,13 @@ g_pcDispDrv = new DirectFBDriver; #endif + // the call to create_area in Open returns AREA_ID_FB on success g_nFrameBufferArea = g_pcDispDrv->Open(); - if ( g_nFrameBufferArea < 0 ) + + if ( g_nFrameBufferArea != AREA_ID_FB && g_nFrameBufferArea < 0 ) { dbprintf( "Failed to init vesa20/dfb driver.\n" ); + return ( false ); } } @@ -640,12 +643,14 @@ g_pcScreenBitmap->m_hArea = g_nFrameBufferArea; g_pcScreenBitmap->m_pRaster = (uint8*)g_sFBAreaInfo.address; - setup_screenmode( 0, false ); + bool bSetupScreenMode = setup_screenmode( 0, false ); + if( !bSetupScreenMode ) + return ( false ); g_nActiveDesktop = 0; g_pcTopView = new Layer( g_pcScreenBitmap ); g_pcDispDrv->SetCursorBitmap( MPTR_MONO, IPoint(0,0), g_anMouseImg, POINTER_WIDTH, POINTER_HEIGHT ); g_pcDispDrv->MouseOn(); - return( 0 ); + return( true ); } diff -ur cosmoe/appserver/server.cpp cosmoe_jc/appserver/server.cpp --- cosmoe/appserver/server.cpp Mon Jul 1 00:22:48 2002 +++ cosmoe_jc/appserver/server.cpp Mon Jul 8 21:22:36 2002 @@ -656,7 +656,14 @@ set_app_server_port( m_hRequestPort ); dbprintf( "appserver: init_desktops()\n" ); - init_desktops(); + bool bDesktops = init_desktops(); + + if(!bDesktops) + { + dbprintf("appserver: failed to init_desktops\n"); + restore_keyboard(); + return; + } dbprintf( "appserver: InitInputSystem\n" ); InitInputSystem(); diff -ur cosmoe/libcosmoe/cosmoe/OS.c cosmoe_jc/libcosmoe/cosmoe/OS.c --- cosmoe/libcosmoe/cosmoe/OS.c Wed May 29 17:06:08 2002 +++ cosmoe_jc/libcosmoe/cosmoe/OS.c Mon Jul 8 21:22:39 2002 @@ -97,6 +97,7 @@ if( fb_ptr == NULL ) { /* the framebuffer is not yet mapped or mapping failed */ + dbprintf( "linux_compat: the framebuffer is not yet mapped or mapping failed\n"); return -1; } if( ppAddress != NULL )