@TwistedTwigleg thanks for reply.
so i've runned some test on my device and unfortunately found that signal doesn't emitted because OS.screen_orientation doesn't changed at all.
omg: https://github.com/godotengine/godot/issues/17109 bug doesn't fixed since 1 Mar 2018
below is method where you can emit signal based on width of viewport(screen).
extends Node
signal screen_orientation_changed(orientation)
const WINDOW_SIZE := OS.window_size
func _ready():
get_viewport().connect("size_changed", self, "_on_size_changed")
func _on_size_changed():
var s := OS.window_size
if WINDOW_SIZE.x < s.x:
emit_signal("screen_orientation_changed", "landscape")
return # somehow function triggers twice
else:
emit_signal("screen_orientation_changed", "portrait")
return # somehow function triggers twice