# Ensures graphics have been initialized and are ready to be used.
class Tasks::Graphics < SingletonTask
  def initialize()
    add_dependency(
      :Any,
      Dependencies::Task.new(FBDev.instance),
      Dependencies::Task.new(DRM.instance),
    )

    # Make the Graphics target depend on this task.
    Targets[:Graphics].add_dependency(:Task, self)
  end

  def run()
    # no-op
  end

  def ux_priority()
    -100
  end
end

# Handles the "legacy fbdev" style of framebuffers.
# (Does nothing, only handles dependencies)
class Tasks::Graphics::FBDev < SingletonTask
  def initialize()
    add_dependency(
      :Files,
      "/sys/class/graphics/fb0",
    )
    # This is only incidental to the fact that /dev/fb0 wouldn't exist for
    # users of the "Graphics" dependency.
    add_dependency(:Mount, "/dev")
  end

  def run()
    # no-op
  end

  def ux_priority()
    -100
  end
end

# Handles DRM
# (Does nothing, only handles dependencies)
class Tasks::Graphics::DRM < SingletonTask
  def initialize()
    add_dependency(
      :Files,
      "/dev/dri/card0",
    )
    add_dependency(:Mount, "/dev")
  end

  def run()
    # no-op
  end

  def ux_priority()
    -100
  end
end
