From cb9f2e8d342ee7d6e56f1f4e2bdfd6deefb19ac6 Mon Sep 17 00:00:00 2001 From: Marcus Overhagen Date: Sun, 7 May 2006 09:33:59 +0000 Subject: [PATCH] Fixed the savety check to actually work. Made sure that fDisplayMode is not modified if fAccSetDisplayMode failes, as on my system fAccGetDisplayMode did return values that would crash because of a virtual_width beeing 0. Generally, this whole class is pretty broken, as the functions modify *some* class member variables before eventually failing. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17352 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../app/drawing/AccelerantHWInterface.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/servers/app/drawing/AccelerantHWInterface.cpp b/src/servers/app/drawing/AccelerantHWInterface.cpp index 2aa4cac55c..1896700b39 100644 --- a/src/servers/app/drawing/AccelerantHWInterface.cpp +++ b/src/servers/app/drawing/AccelerantHWInterface.cpp @@ -377,22 +377,18 @@ AccelerantHWInterface::SetMode(const display_mode &mode) // some safety checks // TODO: more of those! - if (fDisplayMode.virtual_width < 320 - || fDisplayMode.virtual_height < 200) + if (mode.virtual_width < 320 + || mode.virtual_height < 200) return B_BAD_VALUE; // just try to set the mode - we let the graphics driver // approve or deny the request, as it should know best - - fDisplayMode = mode; - - if (fAccSetDisplayMode(&fDisplayMode) != B_OK) { + display_mode new_mode = mode; + if (fAccSetDisplayMode(&new_mode) != B_OK) { ATRACE(("setting display mode failed\n")); - fAccGetDisplayMode(&fDisplayMode); - // We just keep the current mode and continue. - // Note, on startup, this may be different from - // what we think is the current display mode + return B_ERROR; } + fDisplayMode = new_mode; // update frontbuffer fFrontBuffer->SetDisplayMode(fDisplayMode);