Gaphics: Make frame skip a config option
When using something like Valgrind that will run mkxp 20 times slower than normal, frame skip will make the redraw loop completely grind to a halt. Set 'frameSkip' to false in the config to avert this.
This commit is contained in:
		
							parent
							
								
									c504a383ba
								
							
						
					
					
						commit
						19bb6c924e
					
				
					 4 changed files with 17 additions and 5 deletions
				
			
		| 
						 | 
					@ -81,6 +81,7 @@ mkxp reads configuration data from the file "mkxp.conf" contained in the current
 | 
				
			||||||
| defScreenW       | int         | 640     | Width the game window starts in (this is **not** the game resolution)           |
 | 
					| defScreenW       | int         | 640     | Width the game window starts in (this is **not** the game resolution)           |
 | 
				
			||||||
| defScreenH       | int         | 480     | Height the game window starts in                                                |
 | 
					| defScreenH       | int         | 480     | Height the game window starts in                                                |
 | 
				
			||||||
| fixedFramerate   | int         | 0       | FPS will be fixed to this amount. Ignored if 0.                                 |
 | 
					| fixedFramerate   | int         | 0       | FPS will be fixed to this amount. Ignored if 0.                                 |
 | 
				
			||||||
 | 
					| frameSkip        | bool        | true    | Don't skip frames to catch up (useful eg. with Valgrind)                        |
 | 
				
			||||||
| solidFonts       | bool        | false   | Don't use alpha blending for fonts                                              |
 | 
					| solidFonts       | bool        | false   | Don't use alpha blending for fonts                                              |
 | 
				
			||||||
| gameFolder       | string      | "."     | mkxp will look for all game related files here                                  |
 | 
					| gameFolder       | string      | "."     | mkxp will look for all game related files here                                  |
 | 
				
			||||||
| allowSymlinks    | bool        | false   | Allow symlinks to be followed in the game folder.                               |
 | 
					| allowSymlinks    | bool        | false   | Allow symlinks to be followed in the game folder.                               |
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,6 +38,7 @@ Config::Config()
 | 
				
			||||||
      defScreenW(640),
 | 
					      defScreenW(640),
 | 
				
			||||||
      defScreenH(480),
 | 
					      defScreenH(480),
 | 
				
			||||||
      fixedFramerate(0),
 | 
					      fixedFramerate(0),
 | 
				
			||||||
 | 
					      frameSkip(true),
 | 
				
			||||||
      solidFonts(false),
 | 
					      solidFonts(false),
 | 
				
			||||||
      gameFolder("."),
 | 
					      gameFolder("."),
 | 
				
			||||||
      allowSymlinks(false)
 | 
					      allowSymlinks(false)
 | 
				
			||||||
| 
						 | 
					@ -58,6 +59,7 @@ void Config::read()
 | 
				
			||||||
	READ_VAL(defScreenW, Int);
 | 
						READ_VAL(defScreenW, Int);
 | 
				
			||||||
	READ_VAL(defScreenH, Int);
 | 
						READ_VAL(defScreenH, Int);
 | 
				
			||||||
	READ_VAL(fixedFramerate, Int);
 | 
						READ_VAL(fixedFramerate, Int);
 | 
				
			||||||
 | 
						READ_VAL(frameSkip, Bool);
 | 
				
			||||||
	READ_VAL(solidFonts,  Bool);
 | 
						READ_VAL(solidFonts,  Bool);
 | 
				
			||||||
	READ_VAL(gameFolder, ByteArray);
 | 
						READ_VAL(gameFolder, ByteArray);
 | 
				
			||||||
	READ_VAL(allowSymlinks, Bool);
 | 
						READ_VAL(allowSymlinks, Bool);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,6 +41,7 @@ struct Config
 | 
				
			||||||
	int defScreenH;
 | 
						int defScreenH;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int fixedFramerate;
 | 
						int fixedFramerate;
 | 
				
			||||||
 | 
						bool frameSkip;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bool solidFonts;
 | 
						bool solidFonts;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -583,12 +583,20 @@ void Graphics::update()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (p->fpsLimiter.frameSkipRequired())
 | 
						if (p->fpsLimiter.frameSkipRequired())
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		/* Skip frame */
 | 
							if (p->threadData->config.frameSkip)
 | 
				
			||||||
		p->fpsLimiter.delay();
 | 
							{
 | 
				
			||||||
		++p->frameCount;
 | 
								/* Skip frame */
 | 
				
			||||||
		p->threadData->ethread->notifyFrame();
 | 
								p->fpsLimiter.delay();
 | 
				
			||||||
 | 
								++p->frameCount;
 | 
				
			||||||
 | 
								p->threadData->ethread->notifyFrame();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return;
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								/* Just reset frame adjust counter */
 | 
				
			||||||
 | 
								p->fpsLimiter.resetFrameAdjust();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	p->checkResize();
 | 
						p->checkResize();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue