1 Commits

Author SHA1 Message Date
9e2c7a6efa Still not working, trying to use Gio async stuff 2023-03-04 22:02:57 -08:00

View File

@@ -1,23 +1,27 @@
module Wince::Location module Wince::Location
extend self extend self
@@channel = Channel(Geoclue::Simple).new(1)
@@client : Geoclue::Simple? = nil @@client : Geoclue::Simple? = nil
@@fiber : Fiber = spawn setup_client
def setup_client def setup_client
@@channel.send Geoclue::Simple.new_sync("space.quietfeathers.Wince", Geoclue::AccuracyLevel::Street, nil) callback = ->(object : GObject::Object | Nil, result : Gio::AsyncResult) {
Fiber.yield @@client = Geoclue::Simple.new_finish(result)
puts "location callback"
}
Geoclue::Simple.new(
"space.quietfeathers.Wince",
Geoclue::AccuracyLevel::Street,
nil,
callback,
nil
)
end end
# returns latlon if available, otherwise empty array # returns latlon if available, otherwise empty array
def find_location def find_location
if !@@fiber.dead?
return [] of Float64
end
if @@client.nil? if @@client.nil?
@@client = @@channel.receive return [] of Float64
end end
location = @@client.try do |c| location = @@client.try do |c|