2008-08-06 18:36:30 +00:00
|
|
|
// This file is part of BOINC.
|
2005-01-20 23:22:22 +00:00
|
|
|
// http://boinc.berkeley.edu
|
2019-01-12 21:43:48 +00:00
|
|
|
// Copyright (C) 2019 University of California
|
2005-01-20 23:22:22 +00:00
|
|
|
//
|
2008-08-06 18:36:30 +00:00
|
|
|
// BOINC is free software; you can redistribute it and/or modify it
|
|
|
|
// under the terms of the GNU Lesser General Public License
|
|
|
|
// as published by the Free Software Foundation,
|
|
|
|
// either version 3 of the License, or (at your option) any later version.
|
2005-01-20 23:22:22 +00:00
|
|
|
//
|
2008-08-06 18:36:30 +00:00
|
|
|
// BOINC is distributed in the hope that it will be useful,
|
2005-01-20 23:22:22 +00:00
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
// See the GNU Lesser General Public License for more details.
|
|
|
|
//
|
2008-08-06 18:36:30 +00:00
|
|
|
// You should have received a copy of the GNU Lesser General Public License
|
|
|
|
// along with BOINC. If not, see <http://www.gnu.org/licenses/>.
|
2005-01-20 23:22:22 +00:00
|
|
|
|
2008-01-28 22:42:05 +00:00
|
|
|
// DEPRECATED - DO NOT USE
|
|
|
|
|
2005-10-18 00:34:20 +00:00
|
|
|
#if defined(_WIN32) && !defined(__STDWX_H__) && !defined(_BOINC_WIN_) && !defined(_AFX_STDAFX_H_)
|
|
|
|
#include "boinc_win.h"
|
2005-11-21 18:34:44 +00:00
|
|
|
#else
|
|
|
|
#include "config.h"
|
2005-10-18 00:34:20 +00:00
|
|
|
#endif
|
|
|
|
|
2008-02-27 23:26:38 +00:00
|
|
|
#include <cstring>
|
2006-04-19 23:28:08 +00:00
|
|
|
#include "diagnostics.h"
|
2003-10-02 21:16:37 +00:00
|
|
|
#include "boinc_api.h"
|
2004-12-10 21:06:42 +00:00
|
|
|
#include "graphics_impl.h"
|
2003-10-02 21:16:37 +00:00
|
|
|
#include "graphics_api.h"
|
2004-07-15 21:54:48 +00:00
|
|
|
|
2004-12-13 18:55:42 +00:00
|
|
|
static BOINC_MAIN_STATE boinc_main_state;
|
|
|
|
|
|
|
|
static void init_main_state() {
|
|
|
|
boinc_main_state.boinc_init_options_general_hook = boinc_init_options_general;
|
|
|
|
boinc_main_state.boinc_is_standalone_hook = boinc_is_standalone;
|
2004-12-13 19:03:10 +00:00
|
|
|
boinc_main_state.boinc_get_init_data_hook = boinc_get_init_data;
|
2008-01-13 04:16:58 +00:00
|
|
|
boinc_main_state.start_timer_thread_hook = start_timer_thread;
|
2004-12-19 07:53:02 +00:00
|
|
|
boinc_main_state.app_client_shmp = &app_client_shm;
|
2005-09-16 18:16:49 +00:00
|
|
|
#ifdef _WIN32
|
2007-08-06 23:06:16 +00:00
|
|
|
boinc_main_state.gfx_timer_id = (UINT_PTR)NULL;
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void boinc_suspend_graphics_thread() {
|
|
|
|
#ifdef _WIN32
|
|
|
|
if (graphics_threadh) SuspendThread(graphics_threadh);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void boinc_resume_graphics_thread() {
|
|
|
|
#ifdef _WIN32
|
|
|
|
if (graphics_threadh) ResumeThread(graphics_threadh);
|
2005-09-16 18:16:49 +00:00
|
|
|
#endif
|
2004-12-13 18:55:42 +00:00
|
|
|
}
|
|
|
|
|
2004-10-26 21:12:00 +00:00
|
|
|
int boinc_init_graphics(void (*worker)()) {
|
2006-04-19 23:28:08 +00:00
|
|
|
int retval;
|
2006-05-01 21:36:38 +00:00
|
|
|
if (!diagnostics_is_initialized()) {
|
2007-06-08 08:03:02 +00:00
|
|
|
retval = boinc_init_diagnostics(BOINC_DIAG_DEFAULTS);
|
2006-04-19 23:28:08 +00:00
|
|
|
if (retval) return retval;
|
|
|
|
}
|
2004-12-13 18:55:42 +00:00
|
|
|
init_main_state();
|
|
|
|
return boinc_init_graphics_impl(worker, &boinc_main_state);
|
2004-10-26 21:12:00 +00:00
|
|
|
}
|
|
|
|
|
2004-12-10 21:06:42 +00:00
|
|
|
int boinc_init_options_graphics(BOINC_OPTIONS& opt, void (*worker)()) {
|
2006-05-18 04:36:41 +00:00
|
|
|
int retval;
|
|
|
|
if (!diagnostics_is_initialized()) {
|
2007-06-08 08:03:02 +00:00
|
|
|
retval = boinc_init_diagnostics(BOINC_DIAG_DEFAULTS);
|
2006-05-18 04:36:41 +00:00
|
|
|
if (retval) return retval;
|
|
|
|
}
|
2004-12-13 18:55:42 +00:00
|
|
|
init_main_state();
|
|
|
|
return boinc_init_options_graphics_impl(opt, worker, &boinc_main_state);
|
2004-10-16 20:20:37 +00:00
|
|
|
}
|
2004-12-16 03:28:40 +00:00
|
|
|
|
2006-11-08 22:53:32 +00:00
|
|
|
bool boinc_graphics_possible() {
|
|
|
|
#ifdef _WIN32
|
2006-12-27 20:15:46 +00:00
|
|
|
#if 0
|
2006-11-08 22:53:32 +00:00
|
|
|
// Attempt to load the dlls that are required to display graphics, if
|
|
|
|
// any of them fail do not start the application in graphics mode.
|
|
|
|
if (FAILED(__HrLoadAllImportsForDll("GDI32.dll"))) {
|
|
|
|
fprintf(stderr, "Failed to load GDI32.DLL\n" );
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (FAILED(__HrLoadAllImportsForDll("OPENGL32.dll"))) {
|
|
|
|
fprintf( stderr, "Failed to load OPENGL32.DLL\n" );
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (FAILED(__HrLoadAllImportsForDll("GLU32.dll"))) {
|
|
|
|
fprintf( stderr, "Failed to load GLU32.DLL\n" );
|
|
|
|
return false;
|
|
|
|
}
|
2006-12-27 20:15:46 +00:00
|
|
|
#endif
|
2006-11-08 22:53:32 +00:00
|
|
|
#elif defined(__APPLE__)
|
|
|
|
#else
|
|
|
|
if (!getenv("DISPLAY")) return false;
|
|
|
|
#endif
|
|
|
|
return true;
|
|
|
|
}
|