[Scummvm-cvs-logs] CVS: scummvm/backends/sdl sdl.cpp,1.34,1.35 sdl_gl.cpp,1.33,1.34

Max Horn fingolfin at users.sourceforge.net
Thu Jun 19 09:17:19 CEST 2003


Update of /cvsroot/scummvm/scummvm/backends/sdl
In directory sc8-pr-cvs1:/tmp/cvs-serv5932

Modified Files:
	sdl.cpp sdl_gl.cpp 
Log Message:
some fixes for the GL backend - but there are still many things broken, e.g. Ctrl-B only acts on the second (of two) GL textures (which makes the black vertical line stand out even more)

Index: sdl.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/sdl/sdl.cpp,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -d -r1.34 -r1.35
--- sdl.cpp	17 Jun 2003 06:13:57 -0000	1.34
+++ sdl.cpp	19 Jun 2003 16:16:35 -0000	1.35
@@ -61,7 +61,7 @@
 	const byte *b = colors;
 	uint i;
 	SDL_Color *base = _currentPalette + start;
-	for(i = 0; i < num; i++) {
+	for (i = 0; i < num; i++) {
 		base[i].r = b[0];
 		base[i].g = b[1];
 		base[i].b = b[2];
@@ -283,7 +283,7 @@
 
 		if (_scaler_proc == Normal1x) {
 			SDL_Surface *target = _overlayVisible ? _tmpscreen : _screen;
-			for(r = _dirty_rect_list; r != last_rect; ++r) {
+			for (r = _dirty_rect_list; r != last_rect; ++r) {
 				dst = *r;
 				
 				if (_overlayVisible) {
@@ -296,7 +296,7 @@
 			}
 		} else {
 			if (!_overlayVisible) {
-				for(r = _dirty_rect_list; r != last_rect; ++r) {
+				for (r = _dirty_rect_list; r != last_rect; ++r) {
 					dst = *r;
 					dst.x++;	// Shift rect by one since 2xSai needs to acces the data around
 					dst.y++;	// any pixel to scale it, and we want to avoid mem access crashes.
@@ -311,7 +311,7 @@
 			srcPitch = _tmpscreen->pitch;
 			dstPitch = _hwscreen->pitch;
 
-			for(r = _dirty_rect_list; r != last_rect; ++r) {
+			for (r = _dirty_rect_list; r != last_rect; ++r) {
 				register int dst_y = r->y + _currentShakePos;
 				register int dst_h = 0;
 				if (dst_y < _screenHeight) {

Index: sdl_gl.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/sdl/sdl_gl.cpp,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- sdl_gl.cpp	17 Jun 2003 17:34:52 -0000	1.33
+++ sdl_gl.cpp	19 Jun 2003 16:16:35 -0000	1.34
@@ -91,7 +91,7 @@
 	const byte *b = colors;
 	uint i;
 	SDL_Color *base = _currentPalette + start;
-	for(i = 0; i < num; i++) {
+	for (i = 0; i < num; i++) {
 		base[i].r = b[0];
 		base[i].g = b[1];
 		base[i].b = b[2];
@@ -386,46 +386,23 @@
 	if (_num_dirty_rects > 0) {
 	
 		SDL_Rect *r; 
+		SDL_Rect dst;
 		uint32 srcPitch, dstPitch;
 		SDL_Rect *last_rect = _dirty_rect_list + _num_dirty_rects;
 
-		// Convert appropriate parts of the 8bpp image into 16bpp
-		SDL_Rect dst;
-		if (!_overlayVisible) {
-			for(r = _dirty_rect_list; r != last_rect; ++r) {
-				dst = *r;
-				dst.x++;	// Shift rect by one since 2xSai needs to acces the data around
-				dst.y++;	// any pixel to scale it, and we want to avoid mem access crashes.
-				if (_scaler_proc == Normal1x) {
-				    if (_usingOpenGL) {
-					if (SDL_BlitSurface(_screen, r, _tmpscreen, &dst) != 0)
-						error("SDL_BlitSurface failed: %s", SDL_GetError());
-				    }
-				    else { // SDL backend
-					if (SDL_BlitSurface(_screen, r, _hwscreen, &dst) != 0)
-						error("SDL_BlitSurface failed: %s", SDL_GetError());
-				    }
-				} else { // _scaler_proc != Normal1x
+		
+		if (_usingOpenGL) {
+		
+			if (!_overlayVisible) {
+				for (r = _dirty_rect_list; r != last_rect; ++r) {
+					dst = *r;
+					dst.x++;	// Shift rect by one since 2xSai needs to acces the data around
+					dst.y++;	// any pixel to scale it, and we want to avoid mem access crashes.
 					if (SDL_BlitSurface(_screen, r, _tmpscreen, &dst) != 0)
 						error("SDL_BlitSurface failed: %s", SDL_GetError());
 				}
 			}
-		} else {
-		    if (!_usingOpenGL) {
-			SDL_Surface *target = _overlayVisible ? _tmpscreen : _screen;
-			for(r = _dirty_rect_list; r != last_rect; ++r) {
-				dst = *r;
-				// FIXME: I don't understand why this is necessary...
-				dst.x--;
-				dst.y--;
-				if (SDL_BlitSurface(target, r, _hwscreen, &dst) != 0)
-					error("SDL_BlitSurface failed: %s", SDL_GetError());
-			}
-		    }
-		}
-
-		
-		if (_usingOpenGL) {
+			
 			// Almost the same thing as SDL_UpdateRects
 			fb2gl.blit16(
 			    _tmpscreen, 
@@ -447,49 +424,71 @@
 			}
 
 			fb2gl.display();
-		}
-		else { // SDL backend
-		
-		  if (_scaler_proc != Normal1x) {
-			SDL_LockSurface(_tmpscreen);
-			SDL_LockSurface(_hwscreen);
-
-			srcPitch = _tmpscreen->pitch;
-			dstPitch = _hwscreen->pitch;
-
-			for(r = _dirty_rect_list; r != last_rect; ++r) {
-				register int dst_y = r->y + _currentShakePos;
-				register int dst_h = 0;
-				if (dst_y < _screenHeight) {
-					dst_h = r->h;
-					if (dst_h > _screenHeight - dst_y)
-						dst_h = _screenHeight - dst_y;
-
-						dst_y *= _scaleFactor;
-
-						_scaler_proc((byte *)_tmpscreen->pixels + (r->x * 2 + 2) + (r->y + 1) * srcPitch, srcPitch,
-						(byte *)_hwscreen->pixels + r->x * 2 * _scaleFactor + dst_y * dstPitch, dstPitch, r->w, dst_h);
+		} else { // SDL backend
+			
+			if (_scaler_proc == Normal1x) {
+				SDL_Surface *target = _overlayVisible ? _tmpscreen : _screen;
+				for (r = _dirty_rect_list; r != last_rect; ++r) {
+					dst = *r;
+					
+					if (_overlayVisible) {
+						// FIXME: I don't understand why this is necessary...
+						dst.x--;
+						dst.y--;
+					}
+					if (SDL_BlitSurface(target, r, _hwscreen, &dst) != 0)
+						error("SDL_BlitSurface failed: %s", SDL_GetError());
 				}
+			} else {
+				if (!_overlayVisible) {
+					for (r = _dirty_rect_list; r != last_rect; ++r) {
+						dst = *r;
+						dst.x++;	// Shift rect by one since 2xSai needs to acces the data around
+						dst.y++;	// any pixel to scale it, and we want to avoid mem access crashes.
+						if (SDL_BlitSurface(_screen, r, _tmpscreen, &dst) != 0)
+							error("SDL_BlitSurface failed: %s", SDL_GetError());
+					}
+				}
+	
+				SDL_LockSurface(_tmpscreen);
+				SDL_LockSurface(_hwscreen);
 			
-				r->x *= _scaleFactor;
-				r->y = dst_y;
-				r->w *= _scaleFactor;
-				r->h = dst_h * _scaleFactor;
+				srcPitch = _tmpscreen->pitch;
+				dstPitch = _hwscreen->pitch;
+			
+				for (r = _dirty_rect_list; r != last_rect; ++r) {
+					register int dst_y = r->y + _currentShakePos;
+					register int dst_h = 0;
+					if (dst_y < _screenHeight) {
+						dst_h = r->h;
+						if (dst_h > _screenHeight - dst_y)
+							dst_h = _screenHeight - dst_y;
+			
+							dst_y *= _scaleFactor;
+			
+							_scaler_proc((byte *)_tmpscreen->pixels + (r->x * 2 + 2) + (r->y + 1) * srcPitch, srcPitch,
+							(byte *)_hwscreen->pixels + r->x * 2 * _scaleFactor + dst_y * dstPitch, dstPitch, r->w, dst_h);
+					}
+				
+					r->x *= _scaleFactor;
+					r->y = dst_y;
+					r->w *= _scaleFactor;
+					r->h = dst_h * _scaleFactor;
+				}
+			
+				SDL_UnlockSurface(_tmpscreen);
+				SDL_UnlockSurface(_hwscreen);
 			}
-
-			SDL_UnlockSurface(_tmpscreen);
-			SDL_UnlockSurface(_hwscreen);
-		  }
-
-		  // Readjust the dirty rect list in case we are doing a full update.
-		  // This is necessary if shaking is active.
-		  if (_forceFull) {
-			_dirty_rect_list[0].y = 0;
-			_dirty_rect_list[0].h = _screenHeight * _scaleFactor;
-		  }
-
-		  // Finally, blit all our changes to the screen
-		  SDL_UpdateRects(_hwscreen, _num_dirty_rects, _dirty_rect_list);
+			
+			// Readjust the dirty rect list in case we are doing a full update.
+			// This is necessary if shaking is active.
+			if (_forceFull) {
+				_dirty_rect_list[0].y = 0;
+				_dirty_rect_list[0].h = _screenHeight * _scaleFactor;
+			}
+			
+			// Finally, blit all our changes to the screen
+			SDL_UpdateRects(_hwscreen, _num_dirty_rects, _dirty_rect_list);
 		} // END OF "SDL backend"
 	} // if (num_dirty_rects > 0) ...
 





More information about the Scummvm-git-logs mailing list