Use window icons and titles in 1.6+

This commit is contained in:
Petr Mrázek 2014-05-11 15:03:28 +02:00
parent 69c3e7111f
commit ad1f2c530c
2 changed files with 47 additions and 49 deletions

View File

@ -218,6 +218,51 @@ public class OneSixLauncher implements Launcher
e.printStackTrace(System.err); e.printStackTrace(System.err);
return -1; return -1;
} }
final java.nio.ByteBuffer[] icons = IconLoader.load("icon.png");
new Thread() {
public void run() {
ClassLoader cl = ClassLoader.getSystemClassLoader();
try
{
Class<?> Display;
Method isCreated;
Method setTitle;
Method setIcon;
Field fieldWindowCreated;
Boolean created = false;
Display = cl.loadClass("org.lwjgl.opengl.Display");
fieldWindowCreated = Display.getDeclaredField("window_created");
fieldWindowCreated.setAccessible( true );
setTitle = Display.getMethod("setTitle", String.class);
setIcon = Display.getMethod("setIcon", java.nio.ByteBuffer[].class);
created = (Boolean) fieldWindowCreated.get( null );
// set the window title? Maybe?
while(!created)
{
try
{
Thread.sleep(150);
created = (Boolean) fieldWindowCreated.get( null );
} catch (InterruptedException ignored) {}
}
// Give it a bit more time ;)
Thread.sleep(150);
// set the title
setTitle.invoke(null,windowTitle);
// only set icon when there's actually something to set...
if(icons.length > 0)
{
setIcon.invoke(null,(Object)icons);
}
}
catch (Exception e)
{
System.err.println("Couldn't set window icon or title.");
e.printStackTrace(System.err);
}
}
}
.start();
// init params for the main method to chomp on. // init params for the main method to chomp on.
String[] paramsArray = mcparams.toArray(new String[mcparams.size()]); String[] paramsArray = mcparams.toArray(new String[mcparams.size()]);
@ -318,50 +363,3 @@ public class OneSixLauncher implements Launcher
} }
} }
} }
// FIXME: works only on linux, we need a better solution
/*
final java.nio.ByteBuffer[] icons = IconLoader.load("icon.png");
new Thread() {
public void run() {
ClassLoader cl = ClassLoader.getSystemClassLoader();
try
{
Class<?> Display;
Method isCreated;
Method setTitle;
Method setIcon;
Display = cl.loadClass("org.lwjgl.opengl.Display");
isCreated = Display.getMethod("isCreated");
setTitle = Display.getMethod("setTitle", String.class);
setIcon = Display.getMethod("setIcon", java.nio.ByteBuffer[].class);
// set the window title? Maybe?
while(!(Boolean) isCreated.invoke(null))
{
try
{
Thread.sleep(150);
} catch (InterruptedException ignored) {}
}
// Give it a bit more time ;)
Thread.sleep(150);
// set the title
setTitle.invoke(null,windowTitle);
// only set icon when there's actually something to set...
if(icons.length > 0)
{
setIcon.invoke(null,(Object)icons);
}
}
catch (Exception e)
{
System.err.println("Couldn't set window icon or title.");
e.printStackTrace(System.err);
}
}
}
.start();
*/

View File

@ -132,7 +132,7 @@ void MinecraftVersionList::loadBuiltinList()
if (g_VersionFilterData.legacyBlacklist.contains(versionID)) if (g_VersionFilterData.legacyBlacklist.contains(versionID))
{ {
QLOG_ERROR() << "Blacklisted legacy version ignored: " << versionID; QLOG_WARN() << "Blacklisted legacy version ignored: " << versionID;
continue; continue;
} }
@ -230,7 +230,7 @@ void MinecraftVersionList::loadMojangList(QByteArray data, VersionSource source)
if (g_VersionFilterData.legacyBlacklist.contains(versionID)) if (g_VersionFilterData.legacyBlacklist.contains(versionID))
{ {
QLOG_ERROR() << "Blacklisted legacy version ignored: " << versionID; QLOG_WARN() << "Blacklisted legacy version ignored: " << versionID;
continue; continue;
} }