Przeglądaj źródła

Windows fixes for latest code

Ivan Safrin 9 lat temu
rodzic
commit
4992d52d5e
28 zmienionych plików z 132 dodań i 252 usunięć
  1. 2 0
      .gitignore
  2. 2 12
      build/windows/universal/PolycodeCore/PolycodeCore.vcxproj
  3. 6 36
      build/windows/universal/PolycodeCore/PolycodeCore.vcxproj.filters
  4. 2 1
      build/windows/universal/TemplateApp/App.cpp
  5. 1 0
      build/windows/universal/TemplateApp/App.h
  6. 33 25
      build/windows/universal/TemplateApp/PolycodeTemplateApp.cpp
  7. 3 3
      build/windows/universal/TemplateApp/PolycodeTemplateApp.h
  8. 1 0
      build/windows/universal/TemplateApp/TemplateApp.vcxproj
  9. BIN
      build/windows/universal/TemplateApp/bedlayer_main.wav
  10. BIN
      build/windows/win32/Polycode.VC.db
  11. 1 4
      build/windows/win32/Polycode.sln
  12. 7 14
      build/windows/win32/PolycodeCore/PolycodeCore.vcxproj
  13. 6 30
      build/windows/win32/PolycodeCore/PolycodeCore.vcxproj.filters
  14. 5 5
      build/windows/win32/PolycodeStudio/PolycodeStudio.vcxproj
  15. 5 5
      build/windows/win32/PolycodeUI/PolycodeUI.vcxproj
  16. 10 4
      build/windows/win32/TemplateApp/PolycodeTemplateApp.cpp
  17. 1 0
      build/windows/win32/TemplateApp/PolycodeTemplateApp.h
  18. 5 4
      build/windows/win32/TemplateApp/TemplateApp.vcxproj
  19. 1 0
      include/polycode/core/PolyConfig.h
  20. 0 10
      include/polycode/core/PolyUWPCore.h
  21. 0 10
      include/polycode/core/PolyWinCore.h
  22. 3 3
      include/polycode/core/PolyXAudio2AudioInterface.h
  23. 1 1
      src/core/PolyCore.cpp
  24. 0 3
      src/core/PolyShader.cpp
  25. 7 31
      src/core/PolyUWPCore.cpp
  26. 23 41
      src/core/PolyWinCore.cpp
  27. 7 9
      src/core/PolyXAudio2AudioInterface.cpp
  28. 0 1
      src/view/win32/PolycodeView.cpp

+ 2 - 0
.gitignore

@@ -3,6 +3,8 @@
 bin/polyimport
 bin/polybuild
 
+*.VC.db
+
 *.pyc
 
 *.o

+ 2 - 12
build/windows/universal/PolycodeCore/PolycodeCore.vcxproj

@@ -40,7 +40,6 @@
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyCore.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyCoreFileProvider.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyCoreInput.h" />
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyCoreServices.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyCubemap.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyData.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyEntity.h" />
@@ -69,6 +68,7 @@
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyRectangle.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyRenderDataArray.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyRenderer.h" />
+    <ClInclude Include="..\..\..\..\include\polycode\core\PolyRendererPlatformData.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyResource.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyResourceManager.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyScene.h" />
@@ -76,7 +76,6 @@
     <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneLabel.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneLight.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneLine.h" />
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneManager.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneMesh.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyScenePrimitive.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneRenderTexture.h" />
@@ -93,10 +92,6 @@
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyString.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyTexture.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyThreaded.h" />
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTimer.h" />
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTimerManager.h" />
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTween.h" />
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTweenManager.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyUWPCore.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyVector2.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyVector3.h" />
@@ -121,7 +116,6 @@
     <ClCompile Include="..\..\..\..\src\core\PolyCore.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyCoreFileProvider.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyCoreInput.cpp" />
-    <ClCompile Include="..\..\..\..\src\core\PolyCoreServices.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyCubemap.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyData.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyEntity.cpp" />
@@ -148,6 +142,7 @@
     <ClCompile Include="..\..\..\..\src\core\PolyRectangle.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyRenderDataArray.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyRenderer.cpp" />
+    <ClCompile Include="..\..\..\..\src\core\PolyRendererPlatformData.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyResource.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyResourceManager.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyScene.cpp" />
@@ -155,7 +150,6 @@
     <ClCompile Include="..\..\..\..\src\core\PolySceneLabel.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolySceneLight.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolySceneLine.cpp" />
-    <ClCompile Include="..\..\..\..\src\core\PolySceneManager.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolySceneMesh.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyScenePrimitive.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolySceneRenderTexture.cpp" />
@@ -171,10 +165,6 @@
     <ClCompile Include="..\..\..\..\src\core\PolyString.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyTexture.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyThreaded.cpp" />
-    <ClCompile Include="..\..\..\..\src\core\PolyTimer.cpp" />
-    <ClCompile Include="..\..\..\..\src\core\PolyTimerManager.cpp" />
-    <ClCompile Include="..\..\..\..\src\core\PolyTween.cpp" />
-    <ClCompile Include="..\..\..\..\src\core\PolyTweenManager.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyUWPCore.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyVector2.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyVector3.cpp" />

+ 6 - 36
build/windows/universal/PolycodeCore/PolycodeCore.vcxproj.filters

@@ -42,9 +42,6 @@
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyCoreInput.h">
       <Filter>Include</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyCoreServices.h">
-      <Filter>Include</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyCubemap.h">
       <Filter>Include</Filter>
     </ClInclude>
@@ -147,9 +144,6 @@
     <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneLine.h">
       <Filter>Include</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneManager.h">
-      <Filter>Include</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneMesh.h">
       <Filter>Include</Filter>
     </ClInclude>
@@ -195,18 +189,6 @@
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyThreaded.h">
       <Filter>Include</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTimer.h">
-      <Filter>Include</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTimerManager.h">
-      <Filter>Include</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTween.h">
-      <Filter>Include</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTweenManager.h">
-      <Filter>Include</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyUWPCore.h">
       <Filter>Include</Filter>
     </ClInclude>
@@ -249,6 +231,9 @@
     <ClInclude Include="..\..\..\..\include\polycode\bindings\javascript\PolycodeJSWrappers.h">
       <Filter>Include</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\..\..\include\polycode\core\PolyRendererPlatformData.h">
+      <Filter>Include</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\..\..\src\core\PolyBasicFileProvider.cpp">
@@ -281,9 +266,6 @@
     <ClCompile Include="..\..\..\..\src\core\PolyCoreInput.cpp">
       <Filter>Source</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\..\..\src\core\PolyCoreServices.cpp">
-      <Filter>Source</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\..\src\core\PolyCubemap.cpp">
       <Filter>Source</Filter>
     </ClCompile>
@@ -380,9 +362,6 @@
     <ClCompile Include="..\..\..\..\src\core\PolySceneLine.cpp">
       <Filter>Source</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\..\..\src\core\PolySceneManager.cpp">
-      <Filter>Source</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\..\src\core\PolySceneMesh.cpp">
       <Filter>Source</Filter>
     </ClCompile>
@@ -425,18 +404,6 @@
     <ClCompile Include="..\..\..\..\src\core\PolyThreaded.cpp">
       <Filter>Source</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\..\..\src\core\PolyTimer.cpp">
-      <Filter>Source</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\..\src\core\PolyTimerManager.cpp">
-      <Filter>Source</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\..\src\core\PolyTween.cpp">
-      <Filter>Source</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\..\src\core\PolyTweenManager.cpp">
-      <Filter>Source</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\..\src\core\PolyUWPCore.cpp">
       <Filter>Source</Filter>
     </ClCompile>
@@ -485,5 +452,8 @@
     <ClCompile Include="..\..\..\..\src\core\stb_vorbis.cpp">
       <Filter>Source</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\..\..\src\core\PolyRendererPlatformData.cpp">
+      <Filter>Source</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>

+ 2 - 1
build/windows/universal/TemplateApp/App.cpp

@@ -340,6 +340,7 @@ void App::SetWindow(CoreWindow^ window)
 	view->mEglSurface = mEglSurface;
 
 	app = new PolycodeTemplateApp(view);
+	core = app->getCore();
 }
 
 // Initializes scene resources, or loads a previously saved app state.
@@ -369,7 +370,7 @@ void App::Run()
 		eglQuerySurface(mEglDisplay, mEglSurface, EGL_HEIGHT, &panelHeight);
 
 		if (panelWidth != lastPanelWidth || panelHeight != lastPanelHeight) {
-			Services()->getCore()->resizeTo(panelWidth, panelHeight);
+			core->resizeTo(panelWidth, panelHeight);
 		}
 
 		lastPanelWidth = panelWidth;

+ 1 - 0
build/windows/universal/TemplateApp/App.h

@@ -54,6 +54,7 @@ namespace TemplateApp
 		bool m_windowVisible;
 		PropertySet^ surfaceCreationProperties;
 		PolycodeTemplateApp *app;
+		Polycode::Core *core;
 
 		EGLDisplay mEglDisplay;
 		EGLContext mEglContext;

+ 33 - 25
build/windows/universal/TemplateApp/PolycodeTemplateApp.cpp

@@ -6,35 +6,43 @@
 
 
 PolycodeTemplateApp::PolycodeTemplateApp(PolycodeView *view) {
-    core = new POLYCODE_CORE(view, 1280,720,false,false, 0,0,60);
-    
-    //core->addFileSource("archive", "default.pak");
-    ResourcePool *globalPool = Services()->getResourceManager()->getGlobalPool();
-    globalPool->loadResourcesFromFolder("default", true);
-    
-	SceneLabel::createMipmapsForLabels = false;
-
-	MaterialManager *materialManager = Services()->getMaterialManager();
-
-	// Write your code here!
-    
-    Scene *scene = new Scene(Scene::SCENE_2D);
-    scene->useClearColor = true;
-    
-    ScenePrimitive *test = new ScenePrimitive(ScenePrimitive::TYPE_VPLANE, 0.5, 0.5);
-    test->setMaterialByName("Unlit");
-	test->getShaderPass(0).shaderBinding->loadTextureForParam("diffuse", "white.png");
-    scene->addChild(test);
-
-	Sound *bgSound = new Sound("bedlayer_main.wav");
-
-	bgSound->Play(true);
+	core = new POLYCODE_CORE(view, 1280 / 2, 720 / 2, false, false, 0, 0, 60, 0, true);
+
+	core->addFileSource("archive", "default.pak");
+	ResourcePool *globalPool = core->getResourceManager()->getGlobalPool();
+	globalPool->loadResourcesFromFolder("default", true);
+
+	core->addFileSource("archive", "hdr.pak");
+	globalPool->loadResourcesFromFolder("hdr", true);
+
+	scene = new Scene(core, Scene::SCENE_2D);
+	scene->useClearColor = true;
+
+	label = new SceneLabel(globalPool->getMaterial("Unlit"), "Hello World", 32, globalPool->getFont("mono"), Label::ANTIALIAS_FULL, 0.1);
+	scene->addChild(label);
+	/*
+	core->addFileSource("archive", "lua_Polycode.pak");
+	core->addFileSource("archive", "js_Polycode.pak");
+	std::shared_ptr<Script>mainScript = std::static_pointer_cast<Script>(globalPool->loadResource("main.js"));
+	*/
+}
+
+Core *PolycodeTemplateApp::getCore() {
+	return core;
 }
 
 PolycodeTemplateApp::~PolycodeTemplateApp() {
-    
+	delete core;
 }
 
 bool PolycodeTemplateApp::Update() {
-    return core->updateAndRender();
+	bool res = core->Update();
+
+	label->Roll(core->getElapsed() * 40.0);
+
+	RenderFrame *frame = new RenderFrame(core->getViewport());
+	scene->Render(frame, NULL, NULL, NULL, false);
+	core->getRenderer()->submitRenderFrame(frame);
+
+	return res;
 }

+ 3 - 3
build/windows/universal/TemplateApp/PolycodeTemplateApp.h

@@ -11,12 +11,12 @@ public:
     PolycodeTemplateApp(PolycodeView *view);
     ~PolycodeTemplateApp();
     
+	Core *getCore();
     bool Update();
     
 private:
 
-	Sound *sound1;
-	Sound *sound2;
-
+	SceneLabel *label;
+	Scene *scene;
     Core *core;
 };

+ 1 - 0
build/windows/universal/TemplateApp/TemplateApp.vcxproj

@@ -181,6 +181,7 @@
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
     </ClCompile>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

BIN
build/windows/universal/TemplateApp/bedlayer_main.wav


BIN
build/windows/win32/Polycode.VC.db


+ 1 - 4
build/windows/win32/Polycode.sln

@@ -1,7 +1,7 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 14
-VisualStudioVersion = 14.0.24720.0
+VisualStudioVersion = 14.0.25123.0
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PolycodeCore", "PolycodeCore\PolycodeCore.vcxproj", "{92C7971A-F305-4B93-A9DC-6B01AF222FF9}"
 EndProject
@@ -29,9 +29,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
 	EndProjectSection
 EndProject
 Global
-	GlobalSection(Performance) = preSolution
-		HasPerformanceSessions = true
-	EndGlobalSection
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Mixed Platforms = Debug|Mixed Platforms
 		Debug|Win32 = Debug|Win32

+ 7 - 14
build/windows/win32/PolycodeCore/PolycodeCore.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -22,24 +22,25 @@
     <ProjectGuid>{92C7971A-F305-4B93-A9DC-6B01AF222FF9}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>PolycodeCore</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
@@ -168,7 +169,6 @@
     <ClCompile Include="..\..\..\..\src\core\PolyCore.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyCoreFileProvider.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyCoreInput.cpp" />
-    <ClCompile Include="..\..\..\..\src\core\PolyCoreServices.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyCubemap.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyData.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyEntity.cpp" />
@@ -197,6 +197,7 @@
     <ClCompile Include="..\..\..\..\src\core\PolyRectangle.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyRenderDataArray.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyRenderer.cpp" />
+    <ClCompile Include="..\..\..\..\src\core\PolyRendererPlatformData.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyResource.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyResourceManager.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyScene.cpp" />
@@ -219,10 +220,6 @@
     <ClCompile Include="..\..\..\..\src\core\PolyString.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyTexture.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyThreaded.cpp" />
-    <ClCompile Include="..\..\..\..\src\core\PolyTimer.cpp" />
-    <ClCompile Include="..\..\..\..\src\core\PolyTimerManager.cpp" />
-    <ClCompile Include="..\..\..\..\src\core\PolyTween.cpp" />
-    <ClCompile Include="..\..\..\..\src\core\PolyTweenManager.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyVector2.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyVector3.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyVector4.cpp" />
@@ -248,7 +245,6 @@
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyCore.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyCoreFileProvider.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyCoreInput.h" />
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyCoreServices.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyCubemap.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyData.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyEntity.h" />
@@ -279,6 +275,7 @@
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyRectangle.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyRenderDataArray.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyRenderer.h" />
+    <ClInclude Include="..\..\..\..\include\polycode\core\PolyRendererPlatformData.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyResource.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyResourceManager.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyScene.h" />
@@ -301,10 +298,6 @@
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyString.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyTexture.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyThreaded.h" />
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTimer.h" />
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTimerManager.h" />
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTween.h" />
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTweenManager.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyVector2.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyVector3.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyVector4.h" />

+ 6 - 30
build/windows/win32/PolycodeCore/PolycodeCore.vcxproj.filters

@@ -42,18 +42,6 @@
     <ClCompile Include="..\..\..\..\src\core\PolyThreaded.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\..\..\src\core\PolyTimer.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\..\src\core\PolyTimerManager.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\..\src\core\PolyTween.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\..\src\core\PolyTweenManager.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\..\src\core\PolyVector2.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
@@ -114,9 +102,6 @@
     <ClCompile Include="..\..\..\..\src\core\PolyCoreInput.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\..\..\src\core\PolyCoreServices.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\..\src\core\PolyCubemap.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
@@ -258,6 +243,9 @@
     <ClCompile Include="..\..\..\..\src\core\stb_vorbis.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\..\..\src\core\PolyRendererPlatformData.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyFont.h">
@@ -398,18 +386,6 @@
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyThreaded.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTimer.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTimerManager.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTween.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyTweenManager.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyVector2.h">
       <Filter>Header Files</Filter>
     </ClInclude>
@@ -452,9 +428,6 @@
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyCoreInput.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolyCoreServices.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyCubemap.h">
       <Filter>Header Files</Filter>
     </ClInclude>
@@ -479,5 +452,8 @@
     <ClInclude Include="..\..\..\..\include\polycode\view\win32\PolycodeView.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\..\..\include\polycode\core\PolyRendererPlatformData.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
 </Project>

+ 5 - 5
build/windows/win32/PolycodeStudio/PolycodeStudio.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -27,26 +27,26 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>

+ 5 - 5
build/windows/win32/PolycodeUI/PolycodeUI.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -27,26 +27,26 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>

+ 10 - 4
build/windows/win32/TemplateApp/PolycodeTemplateApp.cpp

@@ -9,18 +9,22 @@ PolycodeTemplateApp::PolycodeTemplateApp(PolycodeView *view) {
 	core = new POLYCODE_CORE(view, 1280 / 2, 720 / 2, false, false, 0, 0, 60, 0, true);
 
 	core->addFileSource("archive", "default.pak");
-	ResourcePool *globalPool = Services()->getResourceManager()->getGlobalPool();
+	ResourcePool *globalPool = core->getResourceManager()->getGlobalPool();
 	globalPool->loadResourcesFromFolder("default", true);
 
 	core->addFileSource("archive", "hdr.pak");
 	globalPool->loadResourcesFromFolder("hdr", true);
 
-	scene = new Scene(Scene::SCENE_2D);
+	scene = new Scene(core, Scene::SCENE_2D);
 	scene->useClearColor = true;
 
-	SceneLabel *label = new SceneLabel("Hello World", 32, "mono", Label::ANTIALIAS_FULL, 0.1);
-	label->setRoll(RANDOM_NUMBER * 360.0);
+	label = new SceneLabel(globalPool->getMaterial("Unlit"), "Hello World", 32, globalPool->getFont("mono"), Label::ANTIALIAS_FULL, 0.1);
 	scene->addChild(label);
+	/*
+	core->addFileSource("archive", "lua_Polycode.pak");
+	core->addFileSource("archive", "js_Polycode.pak");
+	std::shared_ptr<Script>mainScript = std::static_pointer_cast<Script>(globalPool->loadResource("main.js"));
+	*/
 }
 
 void PolycodeTemplateApp::handleEvent(Event *event) {
@@ -34,6 +38,8 @@ PolycodeTemplateApp::~PolycodeTemplateApp() {
 bool PolycodeTemplateApp::Update() {
 	bool res = core->Update();
 
+	label->Roll(core->getElapsed() * 40.0);
+
 	RenderFrame *frame = new RenderFrame(core->getViewport());
 	scene->Render(frame, NULL, NULL, NULL, false);
 	core->getRenderer()->submitRenderFrame(frame);

+ 1 - 0
build/windows/win32/TemplateApp/PolycodeTemplateApp.h

@@ -18,5 +18,6 @@ public:
 private:
 	Core *core;
 	Scene *scene;
+	SceneLabel *label;
 
 };

+ 5 - 4
build/windows/win32/TemplateApp/TemplateApp.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -22,24 +22,25 @@
     <ProjectGuid>{E09F38FA-C860-4E70-8FA4-45DD7165778B}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>TemplateApp</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>

+ 1 - 0
include/polycode/core/PolyConfig.h

@@ -23,6 +23,7 @@ THE SOFTWARE.
 #pragma once
 #include "polycode/core/PolyGlobals.h"
 #include "polycode/core/PolyString.h"
+#include <memory>
 
 namespace Polycode {
     

+ 0 - 10
include/polycode/core/PolyUWPCore.h

@@ -73,14 +73,6 @@ namespace Polycode {
 		static const int SYSTEM_FOCUS_EVENT = EVENTBASE_PLATFORMEVENT + 1;
 	};
 
-
-	class UWPCoreMutex : public CoreMutex {
-	public:
-		void lock();
-		void unlock();
-		std::mutex mutex;
-	};
-
 	class OpenGLGraphicsInterface;
 
 	class _PolyExport UWPCore : public Core {
@@ -89,11 +81,9 @@ namespace Polycode {
 		UWPCore(PolycodeView *view, int xRes, int yRes, bool fullScreen, bool vSync, int aaLevel, int anisotropyLevel, int frameRate, int monitorIndex = -1, bool retinaSupport = false);
 		~UWPCore();
 
-		void Render();
 		bool systemUpdate();
 		void setCursor(int cursorType);
 		void createThread(Threaded *target);
-		CoreMutex *createMutex();
 		void copyStringToClipboard(const String& str);
 		String getClipboardString();
 		void createFolder(const String& folderPath);

+ 0 - 10
include/polycode/core/PolyWinCore.h

@@ -110,14 +110,6 @@
 
 namespace Polycode {
 
-	class _PolyExport Win32Mutex : public CoreMutex {
-	public:
-		void lock();
-		void unlock();
-
-		HANDLE winMutex; 
-	};
-
 	class _PolyExport Win32Event {
 	public:
 		int eventGroup;
@@ -217,8 +209,6 @@ public:
 
 		PolyKEY mapKey(LPARAM lParam, WPARAM wParam);
 
-		CoreMutex *createMutex();
-
 		void checkEvents();
 		void initKeymap();
 

+ 3 - 3
include/polycode/core/PolyXAudio2AudioInterface.h

@@ -52,7 +52,7 @@ namespace Polycode {
 
 			AudioMixer *mixer;
 			std::queue<XAudioInterfaceBuffer*> bufferQueue;
-			CoreMutex *bufferMutex;
+			std::mutex bufferMutex;
 	};
 
 	class XAudio2Stream : public Threaded, IXAudio2VoiceCallback {
@@ -107,12 +107,12 @@ namespace Polycode {
 
 	class XAudio2AudioInterface : public Polycode::AudioInterface {
 		public:
-			XAudio2AudioInterface();
+			XAudio2AudioInterface(Core *core);
 			~XAudio2AudioInterface();
 			void setMixer(AudioMixer *mixer);
 
 		private:
-			
+			Core *core;
 			XAudio2Stream *xAudioStream;
 	};
 	

+ 1 - 1
src/core/PolyCore.cpp

@@ -350,7 +350,7 @@ Polycode::CoreFile *Core::openFile(const Polycode::String& fileName, const Polyc
     return NULL;
 }
 
-void Core::closeFile(CoreFile *file) {
+void Core::closeFile(Polycode::CoreFile *file) {
     for(int i=0; i < fileProviders.size(); i++) {
         if(file->provider == fileProviders[i]) {
             fileProviders[i]->closeFile(file);

+ 0 - 3
src/core/PolyShader.cpp

@@ -30,9 +30,6 @@
 
 using namespace Polycode;
 
-const int ShaderProgram::TYPE_VERT;
-const int ShaderProgram::TYPE_FRAG;
-
 ShaderRenderTarget::ShaderRenderTarget() : PolyBase() {
 	buffer = NULL;
 }

+ 7 - 31
src/core/PolyUWPCore.cpp

@@ -33,15 +33,6 @@ using namespace ABI::Windows::Storage;
 using namespace Microsoft::WRL;
 using namespace Microsoft::WRL::Wrappers;
 
-void UWPCoreMutex::lock() {
-	mutex.lock();
-}
-
-void UWPCoreMutex::unlock() {
-	mutex.unlock();
-}
-
-
 UWPCore::UWPCore(PolycodeView *view, int xRes, int yRes, bool fullScreen, bool vSync, int aaLevel, int anisotropyLevel, int frameRate, int monitorIndex, bool retinaSupport) 
 	: Core(xRes, yRes, fullScreen, vSync, aaLevel, anisotropyLevel, frameRate, monitorIndex) {
 
@@ -61,35 +52,25 @@ UWPCore::UWPCore(PolycodeView *view, int xRes, int yRes, bool fullScreen, bool v
 
 	fileProviders.push_back(new BasicFileProvider());
 
-	renderer = new Renderer();
+	renderer = new Renderer(this);
 
 	renderer->setBackingResolutionScale(1.0, 1.0);
 
-	graphicsInterface = new OpenGLGraphicsInterface();
+	graphicsInterface = new OpenGLGraphicsInterface(this);
 	renderer->setGraphicsInterface(this, graphicsInterface);
-	services->setRenderer(renderer);
 	setVideoMode(xRes, yRes, fullScreen, vSync, aaLevel, anisotropyLevel, retinaSupport);
 
-	services->getSoundManager()->setAudioInterface(new XAudio2AudioInterface());
+	getSoundManager()->setAudioInterface(new XAudio2AudioInterface(this));
 
-	eventMutex = createMutex();
 }
 
 UWPCore::~UWPCore() {
 
 }
 
-void UWPCore::Render() {
-	renderer->beginFrame();
-	services->Render(Polycode::Rectangle(0, 0, xRes, yRes));
-	renderer->endFrame();
-	//eglSwapBuffers(mEglDisplay, mEglSurface);
-}
-
-
 void UWPCore::checkEvents() {
 
-	eventMutex->lock();
+	eventMutex.lock();
 
 	UWPEvent event;
 	for (int i = 0; i < systemInputEvents.size(); i++) {
@@ -149,7 +130,7 @@ void UWPCore::checkEvents() {
 	}
 
 	systemInputEvents.clear();
-	eventMutex->unlock();
+	eventMutex.unlock();
 
 }
 
@@ -179,11 +160,6 @@ void UWPCore::createThread(Threaded * target) {
 	 
 }
 
-CoreMutex *UWPCore::createMutex() {
-	UWPCoreMutex *mutex = new UWPCoreMutex();
-	return mutex;
-}
-
 void UWPCore::copyStringToClipboard(const String& str) {
 
 }
@@ -315,9 +291,9 @@ bool UWPCore::systemParseFolder(const Polycode::String& pathString, bool showHid
 }
 
 void UWPCore::handleSystemEvent(UWPEvent systemEvent) {
-	eventMutex->lock();
+	eventMutex.lock();
 	systemInputEvents.push_back(systemEvent);
-	eventMutex->unlock();
+	eventMutex.unlock();
 }
 
 void Core::getScreenInfo(int *width, int *height, int *hz) {

+ 23 - 41
src/core/PolyWinCore.cpp

@@ -22,7 +22,6 @@
 
 #include "polycode/core/PolyWinCore.h"
 #include "polycode/core/PolyCoreInput.h"
-#include "polycode/core/PolyCoreServices.h"
 #include "polycode/core/PolyInputEvent.h"
 #include "polycode/core/PolyLogger.h"
 #include "polycode/core/PolyThreaded.h"
@@ -76,14 +75,6 @@ long getThreadID() {
 
 extern Win32Core *core;
 
-void Win32Mutex::lock() {
-	WaitForSingleObject(winMutex, INFINITE);
-}
-
-void Win32Mutex::unlock() {
-	ReleaseMutex(winMutex);
-}
-
 void ClientResize(HWND hWnd, int nWidth, int nHeight)
 {
   RECT rcClient, rcWindow;
@@ -144,16 +135,13 @@ Win32Core::Win32Core(PolycodeViewBase *view, int _xRes, int _yRes, bool fullScre
 	lastMouseX = -1;
 	lastMouseY = -1;
 
-	eventMutex = createMutex();
-
 	isFullScreen = fullScreen;
 	this->resizable = view->resizable;
 
-	renderer = new Renderer();
-	OpenGLGraphicsInterface *renderInterface = new OpenGLGraphicsInterface();
+	renderer = new Renderer(this);
+	OpenGLGraphicsInterface *renderInterface = new OpenGLGraphicsInterface(this);
 	renderInterface->lineSmooth = true;
 	renderer->setGraphicsInterface(this, renderInterface);
-	services->setRenderer(renderer);
 	setVideoMode(xRes, yRes, fullScreen, vSync, aaLevel, anisotropyLevel, retinaSupport);
 
 	WSADATA WsaData;
@@ -166,7 +154,7 @@ Win32Core::Win32Core(PolycodeViewBase *view, int _xRes, int _yRes, bool fullScre
 	
 	setVSync(vSync);
 
-	services->getSoundManager()->setAudioInterface(new PAAudioInterface());
+	getSoundManager()->setAudioInterface(new PAAudioInterface());
 }
 
 Number Win32Core::getBackingXRes() {
@@ -653,23 +641,23 @@ PolyKEY Win32Core::mapKey(LPARAM lParam, WPARAM wParam) {
 }
 
 void Win32Core::handleKeyDown(LPARAM lParam, WPARAM wParam) {
-	lockMutex(eventMutex);
+	eventMutex.lock();
 	Win32Event newEvent;
 	newEvent.eventGroup = Win32Event::INPUT_EVENT;
 	newEvent.eventCode = InputEvent::EVENT_KEYDOWN;
 	newEvent.keyCode = mapKey(lParam, wParam);
 	win32Events.push_back(newEvent);
-	unlockMutex(eventMutex);
+	eventMutex.unlock();
 }
 
 void Win32Core::handleKeyUp(LPARAM lParam, WPARAM wParam) {
-	lockMutex(eventMutex);
+	eventMutex.lock();
 	Win32Event newEvent;
 	newEvent.eventGroup = Win32Event::INPUT_EVENT;
 	newEvent.eventCode = InputEvent::EVENT_KEYUP;
 	newEvent.keyCode = mapKey(lParam, wParam);
 	win32Events.push_back(newEvent);
-	unlockMutex(eventMutex);
+	eventMutex.unlock();
 }
 
 #ifndef NO_TOUCH_API
@@ -681,7 +669,7 @@ void Win32Core::handleTouchEvent(LPARAM lParam, WPARAM wParam) {
 			return;
 		}
 
-		lockMutex(eventMutex);
+		eventMutex.lock();
 
 		int iNumContacts = LOWORD(wParam);
 		HTOUCHINPUT hInput = (HTOUCHINPUT)lParam;
@@ -734,14 +722,14 @@ void Win32Core::handleTouchEvent(LPARAM lParam, WPARAM wParam) {
 				}
 			}
 		}
-		unlockMutex(eventMutex);
+		eventMutex.unlock();
 	}
 #endif
 
 #ifndef NO_PEN_API
 void Win32Core::handlePointerUpdate(LPARAM lParam, WPARAM wParam) {
 
-	lockMutex(eventMutex);
+	eventMutex.lock();
 
 	POINTER_PEN_INFO	penInfo;
 	POINTER_INFO		pointerInfo;
@@ -803,23 +791,23 @@ void Win32Core::handlePointerUpdate(LPARAM lParam, WPARAM wParam) {
 		win32Events.push_back(newEvent);
 	}
 
-	unlockMutex(eventMutex);
+	eventMutex.unlock();
 }
 #endif
 
 void Win32Core::handleMouseMove(LPARAM lParam, WPARAM wParam) {
-	lockMutex(eventMutex);
+	eventMutex.lock();
 	Win32Event newEvent;
 	newEvent.eventGroup = Win32Event::INPUT_EVENT;
 	newEvent.eventCode = InputEvent::EVENT_MOUSEMOVE;
 	newEvent.mouseX = GET_X_LPARAM(lParam);
 	newEvent.mouseY = GET_Y_LPARAM(lParam); 
 	win32Events.push_back(newEvent);
-	unlockMutex(eventMutex);
+	eventMutex.unlock();
 }
 
 void Win32Core::handleMouseWheel(LPARAM lParam, WPARAM wParam) {
-	lockMutex(eventMutex);
+	eventMutex.lock();
 	Win32Event newEvent;
 	newEvent.eventGroup = Win32Event::INPUT_EVENT;
 	newEvent.mouseX = GET_X_LPARAM(lParam);
@@ -830,11 +818,11 @@ void Win32Core::handleMouseWheel(LPARAM lParam, WPARAM wParam) {
 	else
 		newEvent.eventCode = InputEvent::EVENT_MOUSEWHEEL_UP;
 	win32Events.push_back(newEvent);
-	unlockMutex(eventMutex);
+	eventMutex.unlock();
 }
 
 void Win32Core::handleMouseDown(int mouseCode,LPARAM lParam, WPARAM wParam) {
-	lockMutex(eventMutex);
+	eventMutex.lock();
 	Win32Event newEvent;
 	newEvent.eventGroup = Win32Event::INPUT_EVENT;
 	newEvent.mouseX = GET_X_LPARAM(lParam);
@@ -842,11 +830,11 @@ void Win32Core::handleMouseDown(int mouseCode,LPARAM lParam, WPARAM wParam) {
 	newEvent.eventCode = InputEvent::EVENT_MOUSEDOWN;
 	newEvent.mouseButton = mouseCode;
 	win32Events.push_back(newEvent);
-	unlockMutex(eventMutex);
+	eventMutex.unlock();
 }
 
 void Win32Core::handleMouseUp(int mouseCode,LPARAM lParam, WPARAM wParam) {
-	lockMutex(eventMutex);
+	eventMutex.lock();
 	Win32Event newEvent;
 	newEvent.eventGroup = Win32Event::INPUT_EVENT;
 	newEvent.mouseX = GET_X_LPARAM(lParam);
@@ -854,7 +842,7 @@ void Win32Core::handleMouseUp(int mouseCode,LPARAM lParam, WPARAM wParam) {
 	newEvent.eventCode = InputEvent::EVENT_MOUSEUP;
 	newEvent.mouseButton = mouseCode;
 	win32Events.push_back(newEvent);
-	unlockMutex(eventMutex);
+	eventMutex.unlock();
 }
 
 void Win32Core::handleTextInput(LPARAM lParam, WPARAM wParam) {
@@ -865,9 +853,9 @@ void Win32Core::handleTextInput(LPARAM lParam, WPARAM wParam) {
 	if ((unsigned char) newEvent.text[0] < ' ' || newEvent.text[0] == 127) {
 		return;
 	}
-	lockMutex(eventMutex);
+	eventMutex.lock();
 	win32Events.push_back(newEvent);
-	unlockMutex(eventMutex);
+	eventMutex.unlock();
 }
 
 bool Win32Core::checkSpecialKeyEvents(PolyKEY key) {
@@ -906,7 +894,7 @@ bool Win32Core::checkSpecialKeyEvents(PolyKEY key) {
 }
 
 void Win32Core::checkEvents() {
-	lockMutex(eventMutex);
+	eventMutex.lock();
 	Win32Event event;
 	for(int i=0; i < win32Events.size(); i++) {
 		event = win32Events[i];
@@ -956,7 +944,7 @@ void Win32Core::checkEvents() {
 		}
 	}
 	win32Events.clear();	
-	unlockMutex(eventMutex);		
+	eventMutex.unlock();		
 }
 
 void Win32Core::handleAxisChange(GamepadDeviceEntry * device, int axisIndex, DWORD value) {
@@ -1220,12 +1208,6 @@ void Win32Core::createThread(Threaded *target) {
 void Win32Core::platformSleep(int msecs) {
 	Sleep(msecs);
 }
-
-CoreMutex *Win32Core::createMutex() {
-	Win32Mutex *newMutex = new Win32Mutex();
-	newMutex->winMutex = CreateMutex(  NULL, FALSE, NULL);	 
-	return newMutex;
-}
 		
 std::vector<Polycode::Rectangle> Win32Core::getVideoModes() {
 	std::vector<Polycode::Rectangle> retVector;

+ 7 - 9
src/core/PolyXAudio2AudioInterface.cpp

@@ -23,7 +23,6 @@
 
 #include "polycode/core/PolyXAudio2AudioInterface.h"
 #include "polycode/core/PolyLogger.h"
-#include "polycode/core/PolyCoreServices.h"
 #include "polycode/core/PolyCore.h"
 
 using namespace Polycode;
@@ -75,13 +74,13 @@ HRESULT XAudio2Stream::initXAudio2() {
 
 void XAudio2FillThread::runThread() {
 	while (threadRunning) {
-		bufferMutex->lock();
+		bufferMutex.lock();
 		if (bufferQueue.size() < MAX_XAUDIO_BUFFER_COUNT) {
 			XAudioInterfaceBuffer *buffer = new XAudioInterfaceBuffer();
 			mixer->mixIntoBuffer(&buffer->bufferData[0], POLY_FRAMES_PER_BUFFER);
 			bufferQueue.push(buffer);
 		}
-		bufferMutex->unlock();
+		bufferMutex.unlock();
 	}
 }
 
@@ -97,9 +96,8 @@ void XAudio2Stream::runThread() {
 
 	fillThread = new XAudio2FillThread();
 	fillThread->mixer = mixer;
-	fillThread->bufferMutex = Services()->getCore()->createMutex();
 
-	Services()->getCore()->createThread(fillThread);
+	core->createThread(fillThread);
 
 	lastBuffer = NULL; 
 
@@ -122,7 +120,7 @@ void XAudio2Stream::runThread() {
 			lastBuffer = NULL;
 		}
 		
-		fillThread->bufferMutex->lock();
+		fillThread->bufferMutex.lock();
 		if(fillThread->bufferQueue.size() > 0) {
 			XAUDIO2_BUFFER buf = { 0 };
 			buf.AudioBytes = POLY_FRAMES_PER_BUFFER*POLY_NUM_CHANNELS * 2;
@@ -135,7 +133,7 @@ void XAudio2Stream::runThread() {
 		//	delete lastBuffer; // FIXME!!
 			fillThread->bufferQueue.pop();
 		}
-		fillThread->bufferMutex->unlock();
+		fillThread->bufferMutex.unlock();
 	}
 
 	fillThread->killThread();
@@ -155,10 +153,10 @@ void XAudio2Stream::setMixer(AudioMixer *mixer) {
 void XAudio2AudioInterface::setMixer(AudioMixer *mixer) {
 	xAudioStream->setMixer(mixer);
 	AudioInterface::setMixer(mixer);
-	Services()->getCore()->createThread(xAudioStream);
+	core->createThread(xAudioStream);
 }
 
-XAudio2AudioInterface::XAudio2AudioInterface() {
+XAudio2AudioInterface::XAudio2AudioInterface(Core *core) : core(core) {
 	xAudioStream = new XAudio2Stream();
 }
 

+ 0 - 1
src/view/win32/PolycodeView.cpp

@@ -1,7 +1,6 @@
 
 #include "polycode/view/win32/PolycodeView.h"
 #include "polycode/core/PolyWinCore.h"
-#include "polycode/core/PolyCoreServices.h"
 #include "polycode/core/PolyCoreInput.h"
 #include "polycode/core/PolyRenderer.h"
 #include <io.h>