Skip to content

Commit 6a64b2b

Browse files
committed
fixed deserialization bug
1 parent c2d6fe7 commit 6a64b2b

File tree

4 files changed

+19
-10
lines changed

4 files changed

+19
-10
lines changed

nimx/backends.nim

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ type AudioApi* {.pure.} = enum
2828
sdl
2929
appkit
3030
winapi
31+
alsa
3132

3233
type Backend* = tuple
3334
os: OsApi
@@ -48,13 +49,22 @@ const backend*: Backend =
4849
elif defined android:
4950
(OsApi.android, WindowApi.sdl, InputApi.sdl, GraphicApi.opengles2, AudioApi.sdl)
5051
elif defined macosx:
51-
(OsApi.macosx, WindowApi.sdl, InputApi.sdl, GraphicApi.opengles2, AudioApi.sdl)
52+
when defined nimxAvoidSDL:
53+
(OsApi.macosx, WindowApi.appkit, InputApi.appkit, GraphicApi.opengles2, AudioApi.appkit)
54+
else:
55+
(OsApi.macosx, WindowApi.sdl, InputApi.sdl, GraphicApi.opengles2, AudioApi.sdl)
5256
elif defined linux:
53-
(OsApi.linux, WindowApi.sdl, InputApi.sdl, GraphicApi.opengles2, AudioApi.sdl)
57+
when defined nimxAvoidSDL:
58+
(OsApi.linux, WindowApi.xll, InputApi.xll, GraphicApi.opengles2, AudioApi.alsa)
59+
else:
60+
(OsApi.linux, WindowApi.sdl, InputApi.sdl, GraphicApi.opengles2, AudioApi.sdl)
5461
elif defined windows:
55-
(OsApi.windows, WindowApi.sdl, InputApi.sdl, GraphicApi.opengles2, AudioApi.sdl)
62+
when defined nimxAvoidSDL:
63+
(OsApi.windows, WindowApi.winapi, InputApi.winapi, GraphicApi.opengles2, AudioApi.winapi)
64+
else:
65+
(OsApi.windows, WindowApi.sdl, InputApi.sdl, GraphicApi.opengles2, AudioApi.sdl)
5666
else: {.error: "unknown backend".}
5767

58-
5968
const web* = backend.os == OsApi.web
6069
const mobile* = defined(ios) or defined(android)
70+
const desktop* = not web and not mobile

nimx/meta_extensions/serializers_gen.nim

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ macro genSerializers(typdesc: typed{nkSym}): untyped=
2121

2222
let viewArg = ident("v")
2323
let serArg = ident("s")
24-
let gfxArg = ident("gfx")
24+
let gfx = ident("gfx")
2525

2626
var serializerBody = nnkStmtList.newNimNode()
2727
var deserializerBody = nnkStmtList.newNimNode()
@@ -35,7 +35,7 @@ macro genSerializers(typdesc: typed{nkSym}): untyped=
3535
procCall `viewArg`.`parent`.serializeFields(`serArg`)
3636

3737
deserializerBody.add quote do:
38-
procCall `viewArg`.`parent`.deserializeFields(`serArg`, `gfxArg`)
38+
procCall `viewArg`.`parent`.deserializeFields(`serArg`, `gfx`)
3939

4040
for p in typdesc.propertyDescs():
4141
let serCall = genSerializeCall(viewArg, serArg, ident(p.name))
@@ -49,9 +49,8 @@ macro genSerializers(typdesc: typed{nkSym}): untyped=
4949
method serializeFields*(`viewArg`: `typdesc`, `serArg`: Serializer) =
5050
`serializerBody`
5151

52-
method deserializeFields*(`viewArg`: `typdesc`, `serArg`: Deserializer, `gfxArg`: GraphicsContext)=
52+
method deserializeFields*(`viewArg`: `typdesc`, `serArg`: Deserializer, `gfx`: RootRef)=
5353
`deserializerBody`
54-
echo repr result
5554

5655
template genSerializeCodeForView*(c: typed)=
5756
import nimx / serializers

nimx/serializers.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ proc deserialize*(s: Deserializer, k: string, v: var ContextFree, gfx: RootRef =
134134
s.curKey = k
135135
s.deserialize(v)
136136

137-
proc deserialize*[T](s: Deserializer, k: string, v: var T, gfx: RootRef) {.inline.} =
137+
proc deserialize*[T: not ContextFree](s: Deserializer, k: string, v: var T, gfx: RootRef) {.inline.} =
138138
s.curKey = k
139139
s.deserialize(v, gfx)
140140

nimx/ui_resource.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ proc `@`(str: string): UIResID =
2222
UIResID(hash(str))
2323

2424
proc deserializeView*(jn: JsonNode, gfx: GraphicsContext): View =
25-
newJsonDeserializer(jn).deserialize(result, RootRef(gfx))
25+
newJsonDeserializer(jn).deserialize(result, gfx)
2626

2727
proc deserializeView*(data: string, gfx: GraphicsContext): View =
2828
deserializeView(parseJson(data), gfx)

0 commit comments

Comments
 (0)