From c9c0c72b4b38682a674277790e624dc2591c4e2f Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Tue, 26 Apr 2005 14:45:44 +0000 Subject: [PATCH] added second flag for 3D add-on signalling mode changes happening for apps rendering in non-direct mode git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12469 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/accelerants/nvidia/InitAccelerant.c | 7 +++++-- src/add-ons/accelerants/nvidia/SetDisplayMode.c | 10 ++++++++-- src/add-ons/accelerants/nvidia/engine/nv_general.c | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/add-ons/accelerants/nvidia/InitAccelerant.c b/src/add-ons/accelerants/nvidia/InitAccelerant.c index dcc79f75e9..330e19f6f9 100644 --- a/src/add-ons/accelerants/nvidia/InitAccelerant.c +++ b/src/add-ons/accelerants/nvidia/InitAccelerant.c @@ -187,8 +187,11 @@ status_t INIT_ACCELERANT(int the_fd) { head1_cursor_hide(); if (si->ps.secondary_head) head2_cursor_hide(); - /* make sure a possible 3D add-on will block rendering and re-initialize itself; - * it will reset this flag when it's done. */ + /* make sure a possible 3D add-on will block rendering and re-initialize itself. + * note: update in _this_ order only */ + /* SET_DISPLAY_MODE will reset this flag when it's done. */ + si->mode_changing = true; + /* the 3D add-on will reset this flag when it's done. */ si->mode_changed = true; /* a winner! */ diff --git a/src/add-ons/accelerants/nvidia/SetDisplayMode.c b/src/add-ons/accelerants/nvidia/SetDisplayMode.c index 5e04933b2a..6b8c2348cf 100644 --- a/src/add-ons/accelerants/nvidia/SetDisplayMode.c +++ b/src/add-ons/accelerants/nvidia/SetDisplayMode.c @@ -77,8 +77,11 @@ status_t SET_DISPLAY_MODE(display_mode *mode_to_set) } LOG(1, ("SETMODE: (CONT.) validated command modeflags: $%08x\n", target.flags)); - /* make sure a possible 3D add-on will block rendering and re-initialize itself; - * it will reset this flag when it's done. */ + /* make sure a possible 3D add-on will block rendering and re-initialize itself. + * note: update in _this_ order only */ + /* SET_DISPLAY_MODE will reset this flag when it's done. */ + si->mode_changing = true; + /* the 3D add-on will reset this flag when it's done. */ si->mode_changed = true; /* disable interrupts using the kernel driver */ @@ -362,6 +365,9 @@ status_t SET_DISPLAY_MODE(display_mode *mode_to_set) /* enable interrupts using the kernel driver */ interrupt_enable(true); + /* make sure a possible 3D add-on will re-initialize itself by signalling ready */ + si->mode_changing = false; + /* optimize memory-access if needed */ // head1_mem_priority(colour_depth1); diff --git a/src/add-ons/accelerants/nvidia/engine/nv_general.c b/src/add-ons/accelerants/nvidia/engine/nv_general.c index 88b887dc88..f7f3deddc4 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_general.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_general.c @@ -90,7 +90,7 @@ status_t nv_general_powerup() { status_t status; - LOG(1,("POWERUP: Haiku nVidia Accelerant 0.42 running.\n")); + LOG(1,("POWERUP: Haiku nVidia Accelerant 0.43 running.\n")); /* preset no laptop */ si->ps.laptop = false;