*** empty log message ***

svn path=/trunk/boinc/; revision=2564
This commit is contained in:
David Anderson 2003-10-25 20:58:27 +00:00
parent 1de7999be3
commit ec3423127a
3 changed files with 31 additions and 24 deletions

View File

@ -30,16 +30,6 @@
#define WIN32_LEAN_AND_MEAN // This trims down the windows libraries. #define WIN32_LEAN_AND_MEAN // This trims down the windows libraries.
#define WIN32_EXTRA_LEAN // Trims even farther. #define WIN32_EXTRA_LEAN // Trims even farther.
//#define DRAW_WITH_DLL
#ifdef DRAW_WITH_DLL
__declspec(dllimport) void vis_render(int,int,double,float*,int);
__declspec(dllimport) void vis_unload();
__declspec(dllimport) void vis_init();
#pragma comment(lib,"../../vis_dll/debug/vis.lib")
#endif
static HDC hDC; static HDC hDC;
static HGLRC hRC; static HGLRC hRC;
static HWND hWnd=NULL; // Holds Our Window Handle static HWND hWnd=NULL; // Holds Our Window Handle
@ -65,11 +55,7 @@ BOOL reg_win_class();
BOOL unreg_win_class(); BOOL unreg_win_class();
bool KillWindow() { bool KillWindow() {
#ifdef DRAW_WITH_DLL
if(hDC) vis_unload();
#else
//if(hDC) app_unload_gl(); //if(hDC) app_unload_gl();
#endif
if (hRC) { // Do We Have A Rendering Context? if (hRC) { // Do We Have A Rendering Context?
if (!wglMakeCurrent(NULL,NULL)) { // Are We Able To Release The DC And RC Contexts? if (!wglMakeCurrent(NULL,NULL)) { // Are We Able To Release The DC And RC Contexts?
@ -101,6 +87,7 @@ bool KillWindow() {
// - when get mode change msg (via shared mem) // - when get mode change msg (via shared mem)
// - when in SS mode and get user input // - when in SS mode and get user input
// //
extern FILE* gf();
void SetMode(int mode) { void SetMode(int mode) {
RECT WindowRect = {0,0,0,0}; RECT WindowRect = {0,0,0,0};
int width, height; int width, height;
@ -113,6 +100,8 @@ void SetMode(int mode) {
current_graphics_mode = mode; current_graphics_mode = mode;
// ?? if mode is HIDE, can't we just return here?
if (current_graphics_mode == MODE_FULLSCREEN) { if (current_graphics_mode == MODE_FULLSCREEN) {
HDC screenDC=GetDC(NULL); HDC screenDC=GetDC(NULL);
WindowRect.left = WindowRect.top = 0; WindowRect.left = WindowRect.top = 0;
@ -172,7 +161,16 @@ void SetMode(int mode) {
ShowWindow(hWnd, SW_HIDE); ShowWindow(hWnd, SW_HIDE);
} }
app_client_shm->send_graphics_mode_msg(APP_CORE_GFX_SEG, current_graphics_mode); // do GL initialization every time, since we're creating a new window
//
InitGL();
app_init_gl();
// tell the core client that we're entering new mode
//
app_client_shm->send_graphics_mode_msg(
APP_CORE_GFX_SEG, current_graphics_mode
);
} }
// message handler (includes timer, Windows msgs) // message handler (includes timer, Windows msgs)
@ -187,7 +185,7 @@ LRESULT CALLBACK WndProc( HWND hWnd, // Handle For This Window
static bool visible = true; static bool visible = true;
switch(uMsg) { switch(uMsg) {
case WM_ERASEBKGND: // Check To See If Windows Is Trying To Erase The Background case WM_ERASEBKGND: // Check To See If Windows Is Trying To Erase The Background
return 0; return 0;
case WM_SHOWWINDOW: case WM_SHOWWINDOW:
// this is an attempt to avoid wasting CPU time on rendering // this is an attempt to avoid wasting CPU time on rendering
@ -267,15 +265,11 @@ DWORD WINAPI win_graphics_event_loop( LPVOID gi ) {
// Register window class and graphics mode message // Register window class and graphics mode message
reg_win_class(); reg_win_class();
if (standalone) { if (standalone) {
SetMode(MODE_WINDOW); SetMode(MODE_WINDOW);
} else { } else {
SetMode(MODE_HIDE_GRAPHICS); SetMode(MODE_HIDE_GRAPHICS);
} }
InitGL();
app_init_gl();
win_loop_done = false; win_loop_done = false;
using_opengl = true; using_opengl = true;
while(!win_loop_done) { while(!win_loop_done) {

View File

@ -7066,3 +7066,20 @@ Karl 2003-10-25
client/win/ client/win/
wingui_mainwindow.cpp wingui_mainwindow.cpp
David 25 Oct 2003
- removed code that caps backoff count at one
TODO: we still need to reexamine the backoff policy,
so that multiple file failures don't lead to huge backoffs
- moved OpenGL init calls from the start of the event loop
back to SetMode, undoing an earlier change.
Turns out the need to be in SetMode because it creates a new
window every time.
This should fix the bug that cause Astropulse to show no graphics.
TODO: make sure that when an application window is hidden,
no rendering work gets done.
api/
windows_opengl.C
client/
scheduler_op.C

View File

@ -170,10 +170,6 @@ int SCHEDULER_OP::set_min_rpc_time(PROJECT* p) {
void SCHEDULER_OP::backoff(PROJECT* p, char *error_msg ) { void SCHEDULER_OP::backoff(PROJECT* p, char *error_msg ) {
msg_printf(p, MSG_ERROR, error_msg); msg_printf(p, MSG_ERROR, error_msg);
// Don't back off more if already backed off
//
if (p->min_rpc_time > 0) return;
if (p->master_fetch_failures >= gstate.master_fetch_retry_cap) { if (p->master_fetch_failures >= gstate.master_fetch_retry_cap) {
p->master_url_fetch_pending = true; p->master_url_fetch_pending = true;
} else { } else {