Jump to content

FIX Pantalla Negra - Pantalla Congelada


[D]ELARO ✓

Recommended Posts

Un Fix sencillo y rápido para evitar las pantallas negras o pantallas congeladas, por ejemplo cuando minimizas la ventana del juego por mucho tiempo suele pasar ese problema a todo el mundo.

 

1	Abrir el archivo: EterGrnLib/ModelInstanceUpdate.cpp de su source del cliente

2	Buscar: CGrannyModelInstance::Update

3	Dentro de esa funcion buscar: GrannySetModelClock(m_pgrnModelInstance, GetLocalTime());

4	Pegar arriba: GrannyFreeCompletedModelControls(m_pgrnModelInstance);

Quedaria de esta forma:

	GrannyFreeCompletedModelControls(m_pgrnModelInstance);
	GrannySetModelClock(m_pgrnModelInstance, GetLocalTime());

///////////////////////////////////////////////////////////////////////////////////////////

// EJEMPLO DE MI FUNCION COMPLETA:

void CGrannyModelInstance::Update(DWORD dwAniFPS)
{
	if (!dwAniFPS)
		return;

	const DWORD c_dwCurUpdateFrame = (DWORD)(GetLocalTime() * ANIFPS_MAX);
	const DWORD ANIFPS_STEP = ANIFPS_MAX / dwAniFPS;
	if (c_dwCurUpdateFrame > ANIFPS_STEP && c_dwCurUpdateFrame / ANIFPS_STEP == m_dwOldUpdateFrame / ANIFPS_STEP)
		return;

	m_dwOldUpdateFrame = c_dwCurUpdateFrame;

	// DWORD t1 = timeGetTime();
	GrannyFreeCompletedModelControls(m_pgrnModelInstance);
	GrannySetModelClock(m_pgrnModelInstance, GetLocalTime());
	// DWORD t2 = timeGetTime();

#ifdef __PERFORMANCE_CHECKER__
	{
		static FILE* fp = fopen("perf_grn_setmodelclock.txt", "w");

		if (t2 - t1 > 3)
		{
			fprintf(fp, "%f:%x:- GrannySetModelClock(time=%f) = %dms\n", timeGetTime() / 1000.0f, this, GetLocalTime(), t2 - t1);
			fflush(fp);
		}
	}
#endif
}

 

Una vez terminado compilan su binario y prueban, personalmente lo he estado testeando por un par de horas minimizado y funciona perfecto.

Solución dada por Distraught de Metin2 Dev.

 

Link to comment
Share on other sites

hace 15 horas, [D]ELARO ✓ dijo:

Un Fix sencillo y rápido para evitar las pantallas negras o pantallas congeladas, por ejemplo cuando minimizas la ventana del juego por mucho tiempo suele pasar ese problema a todo el mundo.

 


1	Abrir el archivo: EterGrnLib/ModelInstanceUpdate.cpp de su source del cliente

2	Buscar: CGrannyModelInstance::Update

3	Dentro de esa funcion buscar: GrannySetModelClock(m_pgrnModelInstance, GetLocalTime());

4	Pegar arriba: GrannyFreeCompletedModelControls(m_pgrnModelInstance);

Quedaria de esta forma:

	GrannyFreeCompletedModelControls(m_pgrnModelInstance);
	GrannySetModelClock(m_pgrnModelInstance, GetLocalTime());

///////////////////////////////////////////////////////////////////////////////////////////

// EJEMPLO DE MI FUNCION COMPLETA:

void CGrannyModelInstance::Update(DWORD dwAniFPS)
{
	if (!dwAniFPS)
		return;

	const DWORD c_dwCurUpdateFrame = (DWORD)(GetLocalTime() * ANIFPS_MAX);
	const DWORD ANIFPS_STEP = ANIFPS_MAX / dwAniFPS;
	if (c_dwCurUpdateFrame > ANIFPS_STEP && c_dwCurUpdateFrame / ANIFPS_STEP == m_dwOldUpdateFrame / ANIFPS_STEP)
		return;

	m_dwOldUpdateFrame = c_dwCurUpdateFrame;

	// DWORD t1 = timeGetTime();
	GrannyFreeCompletedModelControls(m_pgrnModelInstance);
	GrannySetModelClock(m_pgrnModelInstance, GetLocalTime());
	// DWORD t2 = timeGetTime();

#ifdef __PERFORMANCE_CHECKER__
	{
		static FILE* fp = fopen("perf_grn_setmodelclock.txt", "w");

		if (t2 - t1 > 3)
		{
			fprintf(fp, "%f:%x:- GrannySetModelClock(time=%f) = %dms\n", timeGetTime() / 1000.0f, this, GetLocalTime(), t2 - t1);
			fflush(fp);
		}
	}
#endif
}

 

Una vez terminado compilan su binario y prueban, personalmente lo he estado testeando por un par de horas minimizado y funciona perfecto.

Solución dada por Distraught de Metin2 Dev.

 

Ya lo as probado y si funciona si funciona muchas gracias gran aportaso 

Link to comment
Share on other sites

hace 20 horas, MiGueLiT0 dijo:

De funcionar sirve creo que el mismo dice que es una solucion rapida, porque el cliente al dejarlo minimisado no sigue funcionando, esto lo que hace si no mal me equivoco es que aunque este minimizado siga funcionando (usando el pc) :v 

Asi esto solo deja en pausa los graficos del juego y cuando abres de nuevo inicia desde ese instante, ya como algunos saben el juego normal al minimizar sigue ejecutando los graficos pero en un tipo de "pausa" y cuando salimos de minimizar empieza a cargar desde el momento que minimizaste, nos damos cuenta por el lag acumulado y por ejemplo en el logo de gm que empieza a acelerar los frames hasta "llegar" a los actuales.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...