Skip to content

Commit af635b6

Browse files
committed
fixed opengl context issue when accesing in the create project thread
1 parent 8357fea commit af635b6

File tree

5 files changed

+38
-16
lines changed

5 files changed

+38
-16
lines changed

CHANGELOG

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
[0.3.1]
2+
- COMPOSER: Fixed accessing opengl context issue when creating project in the new thread.
3+
14
[0.3.0]
25
- ENGINE: Action refactoring. WARNING: Names have changed. All previous games are not compatible.
36
- ENGINE: New DebugScreen (Work in progress)

adventure-composer/src/main/java/com/bladecoder/engineeditor/scneditor/ScnWidget.java

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ public class ScnWidget extends Widget {
8585
private WalkZoneWindow walkZoneWindow;
8686

8787
private boolean showWalkZone;
88+
89+
/**
90+
* The NOTIFY_PROJECT_LOADED listener is called from other thread.
91+
* This flag is to recreate the scene in the OpenGL thread.
92+
*/
93+
private boolean projectLoadedFlag = false;
8894

8995
public ScnWidget(Skin skin) {
9096
bigFont = skin.get("big-font", BitmapFont.class);
@@ -107,23 +113,19 @@ public void propertyChange(PropertyChangeEvent e) {
107113
+ e.getPropertyName());
108114

109115
if (e.getPropertyName().equals(Project.NOTIFY_SCENE_SELECTED)) {
110-
setSelectedScene(Ctx.project.getSelectedScene());
116+
if(!projectLoadedFlag)
117+
setSelectedScene(Ctx.project.getSelectedScene());
111118
} else if (e.getPropertyName().equals(
112119
Project.NOTIFY_ACTOR_SELECTED)) {
113-
setSelectedActor(Ctx.project.getSelectedActor());
120+
if(!projectLoadedFlag)
121+
setSelectedActor(Ctx.project.getSelectedActor());
114122
} else if (e.getPropertyName().equals(
115123
Project.NOTIFY_FA_SELECTED)) {
116-
setSelectedFA(Ctx.project.getSelectedFA());
124+
if(!projectLoadedFlag)
125+
setSelectedFA(Ctx.project.getSelectedFA());
117126
} else if (e.getPropertyName().equals(
118127
Project.NOTIFY_PROJECT_LOADED)) {
119-
if (scn != null) {
120-
scn.dispose();
121-
EngineAssetManager.getInstance().dispose();
122-
scn = null;
123-
}
124-
125-
EngineAssetManager.createEditInstance(Ctx.project
126-
.getProjectDir().getAbsolutePath() + Project.ASSETS_PATH, Ctx.project.getWorld().getWidth(), Ctx.project.getWorld().getHeight());
128+
projectLoadedFlag = true;
127129
}
128130
}
129131
});
@@ -195,6 +197,23 @@ else if (((Element) e.getNewValue()).getTagName()
195197

196198
@Override
197199
public void act(float delta) {
200+
if(projectLoadedFlag) {
201+
projectLoadedFlag = false;
202+
203+
if (scn != null) {
204+
scn.dispose();
205+
EngineAssetManager.getInstance().dispose();
206+
scn = null;
207+
}
208+
209+
EngineAssetManager.createEditInstance(Ctx.project
210+
.getProjectDir().getAbsolutePath() + Project.ASSETS_PATH, Ctx.project.getWorld().getWidth(), Ctx.project.getWorld().getHeight());
211+
212+
setSelectedScene(Ctx.project.getSelectedScene());
213+
setSelectedActor(Ctx.project.getSelectedActor());
214+
setSelectedFA(Ctx.project.getSelectedFA());
215+
}
216+
198217
if (scn != null && animation && !loading && !loadingError) {
199218
faRenderer.update(delta);
200219
scn.update(delta);

adventure-composer/src/main/java/com/bladecoder/engineeditor/ui/CreateProjectDialog.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,15 +94,15 @@ private void createProject(Stage stage) {
9494

9595
Ctx.project.loadProject(new File(location.getText() + "/"
9696
+ projectName.getText()));
97+
98+
Ctx.msg.show(stage, "Project successfully created", 3);
9799
} catch (Exception e) {
98100
String msg = "Something went wrong while creating project.\n\n"
99101
+ e.getClass().getSimpleName() + " - " + e.getMessage();
100-
Ctx.msg.show(stage, msg, 2);
102+
Ctx.msg.show(stage, msg, 3);
101103
EditorLogger.error(msg);
102104
return;
103105
}
104-
105-
Ctx.msg.show(stage, "Project successfully created", 3);
106106
}
107107

108108
@Override

adventure-composer/src/main/resources/versions.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version=0.3.0
1+
version=0.3.1
22
libgdxVersion=1.3.1
33
roboVMVersion=0.0.14
44
buildToolsVersion=20.0.0

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ allprojects {
22
apply plugin: "eclipse"
33
apply plugin: "idea"
44

5-
version = '0.3.0'
5+
version = '0.3.1'
66

77
ext {
88
gdxVersion = '1.3.1'

0 commit comments

Comments
 (0)