Commit 407ffc0f authored by Han Young's avatar Han Young Committed by Nicolas Fella
Browse files

Hardcoded pinephone torch

The current code use gstreamer to toggle flashlight, however gstreamer doesn't work in pinephone for now. this MR hardcode pinephone sysfs path for flashlight as a temporary workaround
parent 6097c084
...@@ -21,6 +21,9 @@ ...@@ -21,6 +21,9 @@
#include "phonepanel.h" #include "phonepanel.h"
#include <qplatformdefs.h> #include <qplatformdefs.h>
#include <fcntl.h>
#include <unistd.h>
#include <QDateTime> #include <QDateTime>
#include <QDBusPendingReply> #include <QDBusPendingReply>
#include <QFile> #include <QFile>
...@@ -92,35 +95,17 @@ void PhonePanel::executeCommand(const QString &command) ...@@ -92,35 +95,17 @@ void PhonePanel::executeCommand(const QString &command)
void PhonePanel::toggleTorch() void PhonePanel::toggleTorch()
{ {
if (!m_running) { static auto FLASH_SYSFS_PATH = "/sys/devices/platform/led-controller/leds/white:flash/brightness";
gst_init(nullptr, nullptr); int fd = open(FLASH_SYSFS_PATH, O_WRONLY);
// create elements
m_source = gst_element_factory_make("droidcamsrc", "source"); if (fd < 0) {
m_sink = gst_element_factory_make("fakesink", "sink"); qWarning() << "Unable to open file %s" << FLASH_SYSFS_PATH;
m_pipeline = gst_pipeline_new("torch-pipeline"); return;
if (!m_pipeline || !m_source || !m_sink) {
qDebug() << "Failed to turn on torch: failed to create elements";
return;
}
gst_bin_add_many(GST_BIN(m_pipeline), m_source, m_sink, NULL);
if (gst_element_link(m_source, m_sink) != TRUE) {
qDebug() << "Failed to turn on torch: failed to link source and sink";
g_object_unref(m_pipeline);
return;
}
g_object_set(m_source, "mode", 2, NULL);
g_object_set(m_source, "video-torch", TRUE, NULL);
if (gst_element_set_state(m_pipeline, GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE) {
qDebug() << "Failed to turn on torch: failed to start pipeline";
g_object_unref(m_pipeline);
return;
}
m_running = true;
} else {
gst_element_set_state(m_pipeline, GST_STATE_NULL);
gst_object_unref(m_pipeline);
m_running = false;
} }
write(fd, m_running ? "0" : "1", 1);
close(fd);
m_running = !m_running;
} }
bool PhonePanel::autoRotate() bool PhonePanel::autoRotate()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment