mirror of https://github.com/stella-emu/stella.git
Reworked the FrameBuffer update system so that TIA updates and overlay
updates are actually two separate things (and often done independently). Previously, the only overlay was the menu, and since this was always drawn over the TIA, updating one or the other was the same thing. Now, the debugger area can be updated without affecting the TIA, since technically it isn't really an overlay (it doesn't sit on top of the TIA). There are still some TODO's wrt using dirty rectangles instead of full updates, but at least the full updates are now restricted to just the overlay area. Fixed multiple frame step in the PromptWidget by changing FrameBuffer::advance() to advance a given number of frames. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@550 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
cbd3258604
commit
92a7352e30
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: FrameBufferGL.cxx,v 1.31 2005-06-21 23:01:23 stephena Exp $
|
||||
// $Id: FrameBufferGL.cxx,v 1.32 2005-06-23 14:33:09 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include <SDL.h>
|
||||
|
@ -200,7 +200,8 @@ bool FrameBufferGL::createScreen()
|
|||
SDL_GL_SwapBuffers();
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
refresh();
|
||||
refreshTIA();
|
||||
refreshOverlay();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -227,7 +228,7 @@ void FrameBufferGL::drawMediaSource()
|
|||
{
|
||||
const uInt32 bufofs = bufofsY + x;
|
||||
uInt8 v = currentFrame[bufofs];
|
||||
if(v == previousFrame[bufofs] && !theRedrawEntireFrameIndicator)
|
||||
if(v == previousFrame[bufofs] && !theRedrawTIAIndicator)
|
||||
continue;
|
||||
|
||||
// x << 1 is times 2 ( doubling width )
|
||||
|
@ -237,7 +238,7 @@ void FrameBufferGL::drawMediaSource()
|
|||
}
|
||||
|
||||
// The frame doesn't need to be completely redrawn anymore
|
||||
theRedrawEntireFrameIndicator = false;
|
||||
theRedrawTIAIndicator = false;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -300,7 +301,7 @@ void FrameBufferGL::toggleFilter()
|
|||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, myFilterParam);
|
||||
|
||||
// The filtering has changed, so redraw the entire screen
|
||||
theRedrawEntireFrameIndicator = true;
|
||||
theRedrawTIAIndicator = true;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: FrameBufferSoft.cxx,v 1.27 2005-06-21 18:46:33 stephena Exp $
|
||||
// $Id: FrameBufferSoft.cxx,v 1.28 2005-06-23 14:33:10 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include <SDL.h>
|
||||
|
@ -96,7 +96,8 @@ bool FrameBufferSoft::createScreen()
|
|||
return false;
|
||||
}
|
||||
|
||||
refresh();
|
||||
refreshTIA();
|
||||
refreshOverlay();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -143,7 +144,7 @@ void FrameBufferSoft::drawMediaSource()
|
|||
for(uInt16 x = 0; x < width; x += 4, ++current, ++previous)
|
||||
{
|
||||
// Has something changed in this set of four pixels?
|
||||
if((*current != *previous) || theRedrawEntireFrameIndicator)
|
||||
if((*current != *previous) || theRedrawTIAIndicator)
|
||||
{
|
||||
uInt8* c = (uInt8*)current;
|
||||
uInt8* p = (uInt8*)previous;
|
||||
|
@ -152,7 +153,7 @@ void FrameBufferSoft::drawMediaSource()
|
|||
for(uInt16 i = 0; i < 4; ++i, ++c, ++p)
|
||||
{
|
||||
// See if this pixel has changed
|
||||
if((*c != *p) || theRedrawEntireFrameIndicator)
|
||||
if((*c != *p) || theRedrawTIAIndicator)
|
||||
{
|
||||
// Can we extend a rectangle or do we have to create a new one?
|
||||
if((currentCount != 0) &&
|
||||
|
@ -252,7 +253,7 @@ void FrameBufferSoft::drawMediaSource()
|
|||
}
|
||||
|
||||
// The frame doesn't need to be completely redrawn anymore
|
||||
theRedrawEntireFrameIndicator = false;
|
||||
theRedrawTIAIndicator = false;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: Debugger.cxx,v 1.30 2005-06-23 02:56:45 urchlay Exp $
|
||||
// $Id: Debugger.cxx,v 1.31 2005-06-23 14:33:10 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include "bspf.hxx"
|
||||
|
@ -568,9 +568,8 @@ string Debugger::disassemble(int start, int lines) {
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Debugger::nextFrame() {
|
||||
myOSystem->frameBuffer().advance();
|
||||
myOSystem->frameBuffer().refresh(true); // Stephen, does this break anything? --Brian
|
||||
void Debugger::nextFrame(int frames) {
|
||||
myOSystem->frameBuffer().advance(frames);
|
||||
myBaseDialog->loadConfig();
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: Debugger.hxx,v 1.27 2005-06-23 02:56:45 urchlay Exp $
|
||||
// $Id: Debugger.hxx,v 1.28 2005-06-23 14:33:10 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#ifndef DEBUGGER_HXX
|
||||
|
@ -51,7 +51,7 @@ enum {
|
|||
for all debugging operations in Stella (parser, 6502 debugger, etc).
|
||||
|
||||
@author Stephen Anthony
|
||||
@version $Id: Debugger.hxx,v 1.27 2005-06-23 02:56:45 urchlay Exp $
|
||||
@version $Id: Debugger.hxx,v 1.28 2005-06-23 14:33:10 stephena Exp $
|
||||
*/
|
||||
class Debugger : public DialogContainer
|
||||
{
|
||||
|
@ -196,7 +196,7 @@ class Debugger : public DialogContainer
|
|||
void toggleD();
|
||||
void reset();
|
||||
void autoLoadSymbols(string file);
|
||||
void nextFrame();
|
||||
void nextFrame(int frames);
|
||||
void clearAllBreakPoints();
|
||||
|
||||
void formatFlags(int f, char *out);
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: DebuggerParser.cxx,v 1.30 2005-06-23 02:56:45 urchlay Exp $
|
||||
// $Id: DebuggerParser.cxx,v 1.31 2005-06-23 14:33:10 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include "bspf.hxx"
|
||||
|
@ -560,11 +560,9 @@ string DebuggerParser::run(const string& command) {
|
|||
} else if(subStringMatch(verb, "disasm")) {
|
||||
return disasm();
|
||||
} else if(subStringMatch(verb, "frame")) {
|
||||
// FIXME: make multiple frames work!
|
||||
int count = 1;
|
||||
if(argCount != 0) count = args[0];
|
||||
for(int i=0; i<count; i++)
|
||||
debugger->nextFrame();
|
||||
debugger->nextFrame(count);
|
||||
return "advanced frame";
|
||||
} else if(subStringMatch(verb, "clearbreaks")) {
|
||||
debugger->clearAllBreakPoints();
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: EventHandler.cxx,v 1.75 2005-06-16 16:36:49 urchlay Exp $
|
||||
// $Id: EventHandler.cxx,v 1.76 2005-06-23 14:33:11 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include <algorithm>
|
||||
|
@ -465,7 +465,8 @@ void EventHandler::poll(uInt32 time)
|
|||
break; // SDL_QUIT
|
||||
|
||||
case SDL_VIDEOEXPOSE:
|
||||
myOSystem->frameBuffer().refresh();
|
||||
myOSystem->frameBuffer().refreshTIA();
|
||||
myOSystem->frameBuffer().refreshOverlay();
|
||||
break; // SDL_VIDEOEXPOSE
|
||||
}
|
||||
|
||||
|
@ -1269,7 +1270,7 @@ void EventHandler::takeSnapshot()
|
|||
filename = sspath + ".png";
|
||||
|
||||
// Now create a Snapshot object and save the PNG
|
||||
myOSystem->frameBuffer().refresh(true);
|
||||
myOSystem->frameBuffer().refreshTIA(true);
|
||||
Snapshot snapshot(myOSystem->frameBuffer());
|
||||
string result = snapshot.savePNG(filename);
|
||||
myOSystem->frameBuffer().showMessage(result);
|
||||
|
@ -1298,7 +1299,7 @@ void EventHandler::enterMenuMode()
|
|||
{
|
||||
myState = S_MENU;
|
||||
myOSystem->menu().reStack();
|
||||
myOSystem->frameBuffer().refresh();
|
||||
myOSystem->frameBuffer().refreshOverlay();
|
||||
myOSystem->frameBuffer().setCursorState();
|
||||
myOSystem->sound().mute(true);
|
||||
myEvent->clear();
|
||||
|
@ -1308,7 +1309,7 @@ void EventHandler::enterMenuMode()
|
|||
void EventHandler::leaveMenuMode()
|
||||
{
|
||||
myState = S_EMULATE;
|
||||
myOSystem->frameBuffer().refresh();
|
||||
myOSystem->frameBuffer().refreshTIA();
|
||||
myOSystem->frameBuffer().setCursorState();
|
||||
myOSystem->sound().mute(false);
|
||||
myEvent->clear();
|
||||
|
@ -1324,7 +1325,7 @@ void EventHandler::enterDebugMode()
|
|||
myState = S_DEBUGGER;
|
||||
myOSystem->createFrameBuffer();
|
||||
myOSystem->debugger().reStack();
|
||||
myOSystem->frameBuffer().refresh();
|
||||
myOSystem->frameBuffer().refreshOverlay();
|
||||
myOSystem->frameBuffer().setCursorState();
|
||||
myEvent->clear();
|
||||
|
||||
|
@ -1337,7 +1338,7 @@ void EventHandler::leaveDebugMode()
|
|||
{
|
||||
myState = S_EMULATE;
|
||||
myOSystem->createFrameBuffer();
|
||||
myOSystem->frameBuffer().refresh();
|
||||
myOSystem->frameBuffer().refreshTIA();
|
||||
myOSystem->frameBuffer().setCursorState();
|
||||
myEvent->clear();
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: FrameBuffer.cxx,v 1.46 2005-06-17 17:34:01 stephena Exp $
|
||||
// $Id: FrameBuffer.cxx,v 1.47 2005-06-23 14:33:11 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include <sstream>
|
||||
|
@ -37,17 +37,17 @@
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
FrameBuffer::FrameBuffer(OSystem* osystem)
|
||||
: myOSystem(osystem),
|
||||
theRedrawEntireFrameIndicator(true),
|
||||
theFrameAdvanceIndicator(false),
|
||||
theRedrawTIAIndicator(true),
|
||||
theZoomLevel(2),
|
||||
theMaxZoomLevel(2),
|
||||
theAspectRatio(1.0),
|
||||
myFrameRate(0),
|
||||
myPauseStatus(false),
|
||||
theOverlayChangedIndicator(false),
|
||||
theRedrawOverlayIndicator(false),
|
||||
myOverlayRedraws(2),
|
||||
theFrameAdvanceIndicator(0),
|
||||
myMessageTime(0),
|
||||
myMessageText(""),
|
||||
myOverlayRedraws(2),
|
||||
myNumRedraws(0)
|
||||
{
|
||||
// Fill the GUI colors array
|
||||
|
@ -150,7 +150,7 @@ void FrameBuffer::initialize(const string& title, uInt32 width, uInt32 height,
|
|||
|
||||
// Erase any messages from a previous run
|
||||
myMessageTime = 0;
|
||||
theRedrawEntireFrameIndicator = true;
|
||||
theRedrawTIAIndicator = true; //FIX
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -191,7 +191,7 @@ void FrameBuffer::update()
|
|||
|
||||
// Erase this message on next update
|
||||
if(myMessageTime == 0)
|
||||
theRedrawEntireFrameIndicator = true;
|
||||
theRedrawTIAIndicator = true; // FIX
|
||||
}
|
||||
}
|
||||
break; // S_EMULATE
|
||||
|
@ -200,11 +200,11 @@ void FrameBuffer::update()
|
|||
case EventHandler::S_MENU:
|
||||
{
|
||||
// Only update the screen if it's been invalidated
|
||||
if(theRedrawEntireFrameIndicator)
|
||||
if(theRedrawTIAIndicator)
|
||||
drawMediaSource();
|
||||
|
||||
// Only update the overlay if it's changed
|
||||
if(theOverlayChangedIndicator)
|
||||
if(theRedrawOverlayIndicator)
|
||||
{
|
||||
// Then overlay any menu items
|
||||
myOSystem->menu().draw();
|
||||
|
@ -215,7 +215,7 @@ void FrameBuffer::update()
|
|||
// menus at least twice (so they'll be in both buffers)
|
||||
// Otherwise, we get horrible flickering
|
||||
myOverlayRedraws--;
|
||||
theOverlayChangedIndicator = (myOverlayRedraws != 0);
|
||||
theRedrawOverlayIndicator = (myOverlayRedraws != 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -223,41 +223,40 @@ void FrameBuffer::update()
|
|||
case EventHandler::S_LAUNCHER:
|
||||
{
|
||||
// Only update the screen if it's been invalidated or the overlay have changed
|
||||
if(theRedrawEntireFrameIndicator || theOverlayChangedIndicator)
|
||||
if(theRedrawOverlayIndicator)
|
||||
{
|
||||
// Overlay the ROM launcher
|
||||
myOSystem->launcher().draw();
|
||||
|
||||
// Now the screen is up to date
|
||||
theRedrawEntireFrameIndicator = false;
|
||||
|
||||
// This is a performance hack to only draw the overlay when necessary
|
||||
// Software mode is single-buffered, so we don't have to worry
|
||||
// However, OpenGL mode is double-buffered, so we need to draw the
|
||||
// menus at least twice (so they'll be in both buffers)
|
||||
// Otherwise, we get horrible flickering
|
||||
myOverlayRedraws--;
|
||||
theOverlayChangedIndicator = (myOverlayRedraws != 0);
|
||||
theRedrawOverlayIndicator = (myOverlayRedraws != 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case EventHandler::S_DEBUGGER:
|
||||
{
|
||||
// Get one frames' worth of data
|
||||
if(theFrameAdvanceIndicator)
|
||||
bool advance = false;
|
||||
if(theFrameAdvanceIndicator > 0)
|
||||
{
|
||||
myOSystem->console().mediaSource().update();
|
||||
theRedrawEntireFrameIndicator = true; // do the next section of code
|
||||
theOverlayChangedIndicator = true; // do this just to be sure
|
||||
theFrameAdvanceIndicator = false;
|
||||
advance = true;
|
||||
--theFrameAdvanceIndicator;
|
||||
}
|
||||
|
||||
// Only update the screen if it's been invalidated
|
||||
if(theRedrawEntireFrameIndicator)
|
||||
// Only update the screen if it's been invalidated or we're in
|
||||
// frame advance mode
|
||||
if(advance || theRedrawTIAIndicator)
|
||||
drawMediaSource();
|
||||
|
||||
// Only update the overlay if it's changed
|
||||
if(theOverlayChangedIndicator)
|
||||
if(theRedrawOverlayIndicator)
|
||||
{
|
||||
// Overlay the ROM launcher
|
||||
myOSystem->debugger().draw();
|
||||
|
@ -268,9 +267,10 @@ void FrameBuffer::update()
|
|||
// menus at least twice (so they'll be in both buffers)
|
||||
// Otherwise, we get horrible flickering
|
||||
myOverlayRedraws--;
|
||||
theOverlayChangedIndicator = (myOverlayRedraws != 0);
|
||||
theRedrawOverlayIndicator = (myOverlayRedraws != 0);
|
||||
}
|
||||
break; // S_DEBUGGER
|
||||
}
|
||||
|
||||
case EventHandler::S_NONE:
|
||||
return;
|
||||
|
@ -281,12 +281,36 @@ void FrameBuffer::update()
|
|||
postFrameUpdate();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void FrameBuffer::refreshTIA(bool now)
|
||||
{
|
||||
// cerr << "refreshTIA() " << myNumRedraws++ << endl;
|
||||
theRedrawTIAIndicator = true;
|
||||
if(now)
|
||||
{
|
||||
myMessageTime = 0;
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void FrameBuffer::refreshOverlay(bool now)
|
||||
{
|
||||
// cerr << "refreshOverlay()\n";
|
||||
if(myOSystem->eventHandler().state() == EventHandler::S_MENU)
|
||||
refreshTIA(now);
|
||||
|
||||
theRedrawOverlayIndicator = true;
|
||||
myOverlayRedraws = 2;
|
||||
if(now) update();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void FrameBuffer::showMessage(const string& message)
|
||||
{
|
||||
myMessageText = message;
|
||||
myMessageTime = myFrameRate << 1; // Show message for 2 seconds
|
||||
theRedrawEntireFrameIndicator = true;
|
||||
theRedrawTIAIndicator = true; // FIXME
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -309,7 +333,7 @@ void FrameBuffer::setPalette(const uInt32* palette)
|
|||
myPalette[i] = mapRGB(r, g, b);
|
||||
}
|
||||
|
||||
theRedrawEntireFrameIndicator = true;
|
||||
theRedrawTIAIndicator = true;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: FrameBuffer.hxx,v 1.41 2005-06-17 17:34:01 stephena Exp $
|
||||
// $Id: FrameBuffer.hxx,v 1.42 2005-06-23 14:33:11 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#ifndef FRAMEBUFFER_HXX
|
||||
|
@ -28,8 +28,8 @@
|
|||
#include "Font.hxx"
|
||||
#include "GuiUtils.hxx"
|
||||
|
||||
class Console;
|
||||
class OSystem;
|
||||
class Console;
|
||||
|
||||
// Text alignment modes for drawString()
|
||||
enum TextAlignment {
|
||||
|
@ -46,7 +46,7 @@ enum TextAlignment {
|
|||
All GUI elements (ala ScummVM) are drawn here as well.
|
||||
|
||||
@author Stephen Anthony
|
||||
@version $Id: FrameBuffer.hxx,v 1.41 2005-06-17 17:34:01 stephena Exp $
|
||||
@version $Id: FrameBuffer.hxx,v 1.42 2005-06-23 14:33:11 stephena Exp $
|
||||
*/
|
||||
class FrameBuffer
|
||||
{
|
||||
|
@ -125,25 +125,24 @@ class FrameBuffer
|
|||
void pause(bool status);
|
||||
|
||||
/**
|
||||
Indicates that the window contents are dirty, and certain areas need
|
||||
Indicates that the TIA area is dirty, and certain areas need
|
||||
to be redrawn.
|
||||
|
||||
@param now Determine if the refresh should be done right away or in
|
||||
the next frame
|
||||
*/
|
||||
void refresh(bool now = false)
|
||||
{
|
||||
// cerr << "refresh() " << myNumRedraws++ << endl;
|
||||
theRedrawEntireFrameIndicator = true;
|
||||
theOverlayChangedIndicator = true;
|
||||
myOverlayRedraws = 2;
|
||||
if(now) { myMessageTime = 0; update(); }
|
||||
}
|
||||
void refreshTIA(bool now = false);
|
||||
|
||||
/**
|
||||
Indicates that the overlay area is dirty, and certain areas need
|
||||
to be redrawn.
|
||||
*/
|
||||
void refreshOverlay(bool now = false);
|
||||
|
||||
/**
|
||||
Indicates that the emulation should advance one frame.
|
||||
*/
|
||||
void advance() { theFrameAdvanceIndicator = true; }
|
||||
void advance(int frames) { theFrameAdvanceIndicator = frames; }
|
||||
|
||||
/**
|
||||
Toggles between fullscreen and window mode.
|
||||
|
@ -411,11 +410,8 @@ class FrameBuffer
|
|||
// Dimensions of the desktop area
|
||||
SDL_Rect myDesktopDim;
|
||||
|
||||
// Indicates if the entire frame should be redrawn
|
||||
bool theRedrawEntireFrameIndicator;
|
||||
|
||||
// Indicates if the emulation should advance by one frame
|
||||
bool theFrameAdvanceIndicator;
|
||||
// Indicates if the TIA area should be redrawn
|
||||
bool theRedrawTIAIndicator;
|
||||
|
||||
// The SDL video buffer
|
||||
SDL_Surface* myScreen;
|
||||
|
@ -451,8 +447,14 @@ class FrameBuffer
|
|||
// Indicates the current pause status
|
||||
bool myPauseStatus;
|
||||
|
||||
// Indicates if the menus should be redrawn
|
||||
bool theOverlayChangedIndicator;
|
||||
// Indicates if the overlay area should be redrawn
|
||||
bool theRedrawOverlayIndicator;
|
||||
|
||||
// Number of times menu have been drawn
|
||||
int myOverlayRedraws;
|
||||
|
||||
// Indicates how many frames the emulation should advance
|
||||
int theFrameAdvanceIndicator;
|
||||
|
||||
// Message timer
|
||||
Int32 myMessageTime;
|
||||
|
@ -460,9 +462,6 @@ class FrameBuffer
|
|||
// Message text
|
||||
string myMessageText;
|
||||
|
||||
// Number of times menu have been drawn
|
||||
uInt32 myOverlayRedraws;
|
||||
|
||||
// Indicates how many times the framebuffer has been redrawn
|
||||
// Used only for debugging purposes
|
||||
uInt32 myNumRedraws;
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: OSystem.cxx,v 1.26 2005-06-20 18:32:11 stephena Exp $
|
||||
// $Id: OSystem.cxx,v 1.27 2005-06-23 14:33:11 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include <cassert>
|
||||
|
@ -339,7 +339,7 @@ void OSystem::createLauncher()
|
|||
// And start the base dialog
|
||||
myLauncher->initialize();
|
||||
myLauncher->reStack();
|
||||
myFrameBuffer->refresh();
|
||||
myFrameBuffer->refreshOverlay();
|
||||
myFrameBuffer->setCursorState();
|
||||
mySound->mute(true);
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: AboutDialog.cxx,v 1.2 2005-06-16 00:55:59 stephena Exp $
|
||||
// $Id: AboutDialog.cxx,v 1.3 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -226,7 +226,7 @@ void AboutDialog::displayInfo()
|
|||
|
||||
delete[] dscStr;
|
||||
|
||||
instance()->frameBuffer().refresh();
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: AddrValueWidget.cxx,v 1.6 2005-06-22 18:30:43 stephena Exp $
|
||||
// $Id: AddrValueWidget.cxx,v 1.7 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -143,7 +143,9 @@ void AddrValueWidget::handleMouseDown(int x, int y, int button, int clickCount)
|
|||
abortEditMode();
|
||||
_selectedItem = newSelectedItem;
|
||||
sendCommand(kAVSelectionChangedCmd, _selectedItem);
|
||||
instance()->frameBuffer().refresh();
|
||||
|
||||
// TODO - dirty rectangle
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// TODO: Determine where inside the string the user clicked and place the
|
||||
|
@ -261,7 +263,8 @@ bool AddrValueWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
// also draw scrollbar
|
||||
_scrollBar->draw();
|
||||
|
||||
instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rectangle
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
_currentKeyDown = keycode;
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: AudioDialog.cxx,v 1.8 2005-06-16 00:55:59 stephena Exp $
|
||||
// $Id: AudioDialog.cxx,v 1.9 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -181,7 +181,7 @@ void AudioDialog::setDefaults()
|
|||
// Make sure that mutually-exclusive items are not enabled at the same time
|
||||
handleSoundEnableChange(true);
|
||||
|
||||
instance()->frameBuffer().refresh();
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: CpuWidget.cxx,v 1.3 2005-06-22 18:30:43 stephena Exp $
|
||||
// $Id: CpuWidget.cxx,v 1.4 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -221,7 +221,8 @@ void CpuWidget::handleCommand(CommandSender* sender, int cmd, int data)
|
|||
*/
|
||||
}
|
||||
|
||||
instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rect, or is it necessary here?
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: DataGridWidget.cxx,v 1.3 2005-06-22 18:30:43 stephena Exp $
|
||||
// $Id: DataGridWidget.cxx,v 1.4 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -129,7 +129,9 @@ void DataGridWidget::handleMouseDown(int x, int y, int button, int clickCount)
|
|||
_currentCol = _selectedItem - (_currentRow * _cols);
|
||||
|
||||
sendCommand(kDGSelectionChangedCmd, _selectedItem);
|
||||
instance()->frameBuffer().refresh();
|
||||
|
||||
// TODO - dirty rectangle
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// TODO: Determine where inside the string the user clicked and place the
|
||||
|
@ -269,7 +271,9 @@ bool DataGridWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
_selectedItem = _currentRow*_cols + _currentCol;
|
||||
draw();
|
||||
sendCommand(kDGSelectionChangedCmd, _selectedItem);
|
||||
instance()->frameBuffer().refresh();
|
||||
|
||||
// TODO - dirty rectangle
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
_currentKeyDown = keycode;
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: DebuggerDialog.cxx,v 1.16 2005-06-20 18:32:12 stephena Exp $
|
||||
// $Id: DebuggerDialog.cxx,v 1.17 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -127,7 +127,7 @@ void DebuggerDialog::handleCommand(CommandSender* sender, int cmd, int data)
|
|||
break;
|
||||
|
||||
case kDDAdvCmd:
|
||||
instance()->debugger().nextFrame();
|
||||
instance()->debugger().nextFrame(1);
|
||||
myTab->loadConfig();
|
||||
break;
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: DialogContainer.cxx,v 1.10 2005-06-16 00:55:59 stephena Exp $
|
||||
// $Id: DialogContainer.cxx,v 1.11 2005-06-23 14:33:11 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include "OSystem.hxx"
|
||||
|
@ -86,7 +86,7 @@ void DialogContainer::draw()
|
|||
void DialogContainer::addDialog(Dialog* d)
|
||||
{
|
||||
myDialogStack.push(d);
|
||||
myOSystem->frameBuffer().refresh();
|
||||
myOSystem->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -95,7 +95,7 @@ void DialogContainer::removeDialog()
|
|||
if(!myDialogStack.empty())
|
||||
{
|
||||
myDialogStack.pop();
|
||||
myOSystem->frameBuffer().refresh();
|
||||
myOSystem->frameBuffer().refreshOverlay();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: EditNumWidget.cxx,v 1.4 2005-06-20 21:01:37 stephena Exp $
|
||||
// $Id: EditNumWidget.cxx,v 1.5 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -75,7 +75,8 @@ void EditNumWidget::handleMouseDown(int x, int y, int button, int clickCount)
|
|||
if (setCaretPos(i))
|
||||
{
|
||||
draw();
|
||||
_boss->instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rectangle
|
||||
_boss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: EditTextWidget.cxx,v 1.4 2005-06-22 18:30:43 stephena Exp $
|
||||
// $Id: EditTextWidget.cxx,v 1.5 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -65,7 +65,8 @@ void EditTextWidget::handleMouseDown(int x, int y, int button, int clickCount)
|
|||
if (setCaretPos(i))
|
||||
{
|
||||
draw();
|
||||
_boss->instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rectangle
|
||||
_boss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: EditableWidget.cxx,v 1.6 2005-06-22 18:30:43 stephena Exp $
|
||||
// $Id: EditableWidget.cxx,v 1.7 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -54,7 +54,8 @@ void EditableWidget::setEditString(const string& str)
|
|||
_editScrollOffset = 0;
|
||||
|
||||
// Make sure the new string is seen onscreen
|
||||
_boss->instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rectangle
|
||||
_boss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -141,7 +142,8 @@ bool EditableWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
if (dirty)
|
||||
{
|
||||
draw();
|
||||
_boss->instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rectangle
|
||||
_boss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
return handled;
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: GameInfoDialog.cxx,v 1.6 2005-06-16 00:55:59 stephena Exp $
|
||||
// $Id: GameInfoDialog.cxx,v 1.7 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -118,7 +118,7 @@ void GameInfoDialog::displayInfo()
|
|||
delete[] keyStr;
|
||||
delete[] dscStr;
|
||||
|
||||
instance()->frameBuffer().refresh();
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: HelpDialog.cxx,v 1.8 2005-06-16 00:55:59 stephena Exp $
|
||||
// $Id: HelpDialog.cxx,v 1.9 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -173,7 +173,7 @@ void HelpDialog::displayInfo()
|
|||
delete[] keyStr;
|
||||
delete[] dscStr;
|
||||
|
||||
instance()->frameBuffer().refresh();
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: ListWidget.cxx,v 1.21 2005-06-22 18:30:43 stephena Exp $
|
||||
// $Id: ListWidget.cxx,v 1.22 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -77,7 +77,9 @@ void ListWidget::setSelected(int item)
|
|||
_currentPos = _selectedItem - _entriesPerPage / 2;
|
||||
scrollToCurrent();
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
|
||||
// TODO - dirty rectangle
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -142,7 +144,9 @@ void ListWidget::handleMouseDown(int x, int y, int button, int clickCount)
|
|||
abortEditMode();
|
||||
_selectedItem = newSelectedItem;
|
||||
sendCommand(kListSelectionChangedCmd, _selectedItem);
|
||||
instance()->frameBuffer().refresh();
|
||||
|
||||
// TODO - dirty rectangle
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// TODO: Determine where inside the string the user clicked and place the
|
||||
|
@ -302,7 +306,8 @@ bool ListWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
// also draw scrollbar
|
||||
_scrollBar->draw();
|
||||
|
||||
instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rectangle
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
_currentKeyDown = keycode;
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: PopUpWidget.cxx,v 1.12 2005-06-16 00:56:00 stephena Exp $
|
||||
// $Id: PopUpWidget.cxx,v 1.13 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -177,7 +177,8 @@ void PopUpDialog::setSelection(int item)
|
|||
if(item >= 0)
|
||||
drawMenuEntry(item, true);
|
||||
|
||||
_popUpBoss->instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rectangle
|
||||
_popUpBoss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: ProgressDialog.cxx,v 1.2 2005-06-16 00:56:00 stephena Exp $
|
||||
// $Id: ProgressDialog.cxx,v 1.3 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -47,7 +47,7 @@ ProgressDialog::ProgressDialog(OSystem* osystem, DialogContainer* parent,
|
|||
// across the entire screen for a split-second
|
||||
|
||||
parent->addDialog(this);
|
||||
instance()->frameBuffer().refresh(true);
|
||||
instance()->frameBuffer().refreshOverlay(true);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -59,7 +59,7 @@ ProgressDialog::~ProgressDialog()
|
|||
void ProgressDialog::done()
|
||||
{
|
||||
parent()->removeDialog();
|
||||
instance()->frameBuffer().refresh(true);
|
||||
instance()->frameBuffer().refreshOverlay(true);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -87,6 +87,6 @@ void ProgressDialog::setProgress(int progress)
|
|||
{
|
||||
myCurrentStep += myStep;
|
||||
mySlider->setValue(p);
|
||||
instance()->frameBuffer().refresh(true);
|
||||
instance()->frameBuffer().refreshOverlay(true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: PromptWidget.cxx,v 1.12 2005-06-23 01:10:26 urchlay Exp $
|
||||
// $Id: PromptWidget.cxx,v 1.13 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -152,6 +152,7 @@ bool PromptWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
{
|
||||
int i;
|
||||
bool handled = true;
|
||||
bool dirty = false;
|
||||
|
||||
switch (keycode)
|
||||
{
|
||||
|
@ -186,8 +187,7 @@ bool PromptWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
|
||||
printPrompt();
|
||||
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
dirty = true;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -196,14 +196,12 @@ bool PromptWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
killChar(-1);
|
||||
|
||||
scrollToCurrent();
|
||||
draw(); // FIXME - not nice to redraw the full console just for one char!
|
||||
instance()->frameBuffer().refresh();
|
||||
dirty = true;
|
||||
break;
|
||||
|
||||
case 127:
|
||||
killChar(+1);
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
dirty = true;
|
||||
break;
|
||||
|
||||
case 256 + 24: // pageup
|
||||
|
@ -217,8 +215,8 @@ bool PromptWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
if (_scrollLine < _firstLineInBuffer + _linesPerPage - 1)
|
||||
_scrollLine = _firstLineInBuffer + _linesPerPage - 1;
|
||||
updateScrollBuffer();
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
|
||||
dirty = true;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -233,8 +231,8 @@ bool PromptWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
if (_scrollLine > _promptEndPos / _lineWidth)
|
||||
_scrollLine = _promptEndPos / _lineWidth;
|
||||
updateScrollBuffer();
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
|
||||
dirty = true;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -247,8 +245,7 @@ bool PromptWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
else
|
||||
_currentPos = _promptStartPos;
|
||||
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
dirty = true;
|
||||
break;
|
||||
|
||||
case 256 + 23: // end
|
||||
|
@ -262,8 +259,7 @@ bool PromptWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
else
|
||||
_currentPos = _promptEndPos;
|
||||
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
dirty = true;
|
||||
break;
|
||||
|
||||
case 273: // cursor up
|
||||
|
@ -274,8 +270,8 @@ bool PromptWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
|
||||
_scrollLine -= 1;
|
||||
updateScrollBuffer();
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
|
||||
dirty = true;
|
||||
}
|
||||
else
|
||||
historyScroll(+1);
|
||||
|
@ -290,8 +286,8 @@ bool PromptWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
|
||||
_scrollLine += 1;
|
||||
updateScrollBuffer();
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
|
||||
dirty = true;
|
||||
}
|
||||
else
|
||||
historyScroll(-1);
|
||||
|
@ -300,15 +296,15 @@ bool PromptWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
case 275: // cursor right
|
||||
if (_currentPos < _promptEndPos)
|
||||
_currentPos++;
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
|
||||
dirty = true;
|
||||
break;
|
||||
|
||||
case 276: // cursor left
|
||||
if (_currentPos > _promptStartPos)
|
||||
_currentPos--;
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
|
||||
dirty = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -332,6 +328,13 @@ bool PromptWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
break;
|
||||
}
|
||||
|
||||
if(dirty)
|
||||
{
|
||||
draw();
|
||||
// TODO - dirty rectangle
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
return handled;
|
||||
}
|
||||
|
||||
|
@ -361,7 +364,7 @@ void PromptWidget::handleCommand(CommandSender* sender, int cmd, int data)
|
|||
{
|
||||
_scrollLine = newPos;
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -408,7 +411,7 @@ void PromptWidget::specialKeys(int keycode)
|
|||
if(handled)
|
||||
{
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -544,7 +547,8 @@ void PromptWidget::historyScroll(int direction)
|
|||
scrollToCurrent();
|
||||
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rectangle
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -615,7 +619,8 @@ void PromptWidget::putchar(int c)
|
|||
putcharIntern(c);
|
||||
|
||||
draw(); // FIXME - not nice to redraw the full console just for one char!
|
||||
instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rectangle
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -648,7 +653,8 @@ void PromptWidget::print(const char *str)
|
|||
putcharIntern(*str++);
|
||||
|
||||
draw();
|
||||
instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rectangle
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: RamWidget.cxx,v 1.8 2005-06-22 18:30:44 stephena Exp $
|
||||
// $Id: RamWidget.cxx,v 1.9 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -216,7 +216,8 @@ void RamWidget::handleCommand(CommandSender* sender, int cmd, int data)
|
|||
break;
|
||||
}
|
||||
|
||||
instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rect, or is it necessary here?
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: ScrollBarWidget.cxx,v 1.7 2005-06-16 00:56:00 stephena Exp $
|
||||
// $Id: ScrollBarWidget.cxx,v 1.8 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -187,7 +187,8 @@ void ScrollBarWidget::handleMouseMoved(int x, int y, int button)
|
|||
draw();
|
||||
|
||||
// Refresh the FB, since the selected part has changed
|
||||
_boss->instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rectangle
|
||||
_boss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -228,7 +229,8 @@ void ScrollBarWidget::recalc()
|
|||
_sliderPos = UP_DOWN_BOX_HEIGHT;
|
||||
}
|
||||
|
||||
_boss->instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rectangle
|
||||
_boss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: TabWidget.cxx,v 1.9 2005-06-17 14:42:49 stephena Exp $
|
||||
// $Id: TabWidget.cxx,v 1.10 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -125,7 +125,9 @@ void TabWidget::setActiveTab(int tabID)
|
|||
_activeWidget->receivedFocus();
|
||||
|
||||
_boss->draw();
|
||||
_boss->instance()->frameBuffer().refresh();
|
||||
|
||||
// TODO - dirty rectangle
|
||||
_boss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -241,7 +243,8 @@ void TabWidget::handleCommand(CommandSender* sender, int cmd, int data)
|
|||
Widget::setFocusForChain(_firstWidget, _activeWidget);
|
||||
|
||||
// Make sure the changes are shown onscreen
|
||||
_boss->instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rectangle
|
||||
_boss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -263,7 +266,8 @@ void TabWidget::loadConfig()
|
|||
}
|
||||
|
||||
// Make sure changes are seen onscreen
|
||||
instance()->frameBuffer().refresh();
|
||||
// TODO - dirty rectangle
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: VideoDialog.cxx,v 1.16 2005-06-16 00:56:00 stephena Exp $
|
||||
// $Id: VideoDialog.cxx,v 1.17 2005-06-23 14:33:11 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -336,7 +336,7 @@ void VideoDialog::setDefaults()
|
|||
// Make sure that mutually-exclusive items are not enabled at the same time
|
||||
handleRendererChange(0); // 0 indicates software mode
|
||||
|
||||
instance()->frameBuffer().refresh();
|
||||
instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: Widget.cxx,v 1.18 2005-06-16 22:18:02 stephena Exp $
|
||||
// $Id: Widget.cxx,v 1.19 2005-06-23 14:33:12 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -339,8 +339,8 @@ void StaticTextWidget::setValue(int value)
|
|||
_label = buf;
|
||||
|
||||
// Refresh the screen when the text has changed
|
||||
// TODO - eventually, this should be a dirty rectangle
|
||||
_boss->instance()->frameBuffer().refresh();
|
||||
// TODO - create dirty rectangle
|
||||
_boss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -421,8 +421,8 @@ void CheckboxWidget::setState(bool state)
|
|||
sendCommand(_cmd, _state);
|
||||
|
||||
// Refresh the screen after the checkbox is drawn
|
||||
// TODO - eventually, this should be a dirty rectangle
|
||||
_boss->instance()->frameBuffer().refresh();
|
||||
// TODO - create dirty rectangle
|
||||
_boss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -480,8 +480,8 @@ void SliderWidget::handleMouseMoved(int x, int y, int button)
|
|||
sendCommand(_cmd, _value);
|
||||
}
|
||||
// Refresh the screen while the slider is being redrawn
|
||||
// TODO - eventually, this should be a dirty rectangle
|
||||
_boss->instance()->frameBuffer().refresh();
|
||||
// TODO - create dirty rectangle
|
||||
_boss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: Widget.hxx,v 1.20 2005-06-20 18:32:12 stephena Exp $
|
||||
// $Id: Widget.hxx,v 1.21 2005-06-23 14:33:12 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -67,7 +67,7 @@ enum {
|
|||
This is the base class for all widgets.
|
||||
|
||||
@author Stephen Anthony
|
||||
@version $Id: Widget.hxx,v 1.20 2005-06-20 18:32:12 stephena Exp $
|
||||
@version $Id: Widget.hxx,v 1.21 2005-06-23 14:33:12 stephena Exp $
|
||||
*/
|
||||
class Widget : public GuiObject
|
||||
{
|
||||
|
@ -98,10 +98,10 @@ class Widget : public GuiObject
|
|||
virtual bool wantsFocus() { return false; };
|
||||
|
||||
void setFlags(int flags) { _flags |= flags;
|
||||
_boss->instance()->frameBuffer().refresh();
|
||||
_boss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
void clearFlags(int flags) { _flags &= ~flags;
|
||||
_boss->instance()->frameBuffer().refresh();
|
||||
_boss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
int getFlags() const { return _flags; }
|
||||
|
||||
|
@ -168,7 +168,7 @@ class StaticTextWidget : public Widget
|
|||
void setValue(int value);
|
||||
void setAlign(TextAlignment align) { _align = align; }
|
||||
void setLabel(const string& label) { _label = label;
|
||||
_boss->instance()->frameBuffer().refresh();
|
||||
_boss->instance()->frameBuffer().refreshOverlay();
|
||||
}
|
||||
const string& getLabel() const { return _label; }
|
||||
|
||||
|
|
Loading…
Reference in New Issue