[fbdebug] Add panning functionality (#1207)
This commit is contained in:
parent
12487a1efa
commit
4c91a72ff1
2 changed files with 37 additions and 6 deletions
|
@ -1,7 +1,7 @@
|
||||||
# Contributor: drebrez <drebrez@gmail.com>
|
# Contributor: drebrez <drebrez@gmail.com>
|
||||||
# Maintainer: drebrez <drebrez@gmail.com>
|
# Maintainer: drebrez <drebrez@gmail.com>
|
||||||
pkgname=fbdebug
|
pkgname=fbdebug
|
||||||
pkgver=0.1
|
pkgver=0.2
|
||||||
pkgrel=0
|
pkgrel=0
|
||||||
pkgdesc="Framebuffer debugging tool"
|
pkgdesc="Framebuffer debugging tool"
|
||||||
url="https://github.com/postmarketOS"
|
url="https://github.com/postmarketOS"
|
||||||
|
@ -22,4 +22,4 @@ package() {
|
||||||
"${pkgdir}/usr/sbin/fbdebug"
|
"${pkgdir}/usr/sbin/fbdebug"
|
||||||
}
|
}
|
||||||
|
|
||||||
sha512sums="adaad7542ccac8d10eac5761933c24de654ae169ea1d64649a8b728b4ecac987c77ca4f77d64a43e260c0042b207482936102ba55d9c528331eabefc746f3bae fbdebug.c"
|
sha512sums="d6e581f1de822ecac3a392ecd1a555d559fa28315006a94dbe86be2589137584b558e20abc5ae912e4b00c9d8a35db5139eb514b2c95dd2b2299a3fcd47cda46 fbdebug.c"
|
||||||
|
|
|
@ -16,6 +16,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -26,8 +27,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
void usage(char* appname)
|
void usage(char* appname)
|
||||||
{
|
{
|
||||||
printf("Usage: %s [-d DEV] [-h]\n\
|
printf("Usage: %s [-d DEV] [-i] [-p] [-h]\n\
|
||||||
-d Framebuffer device (default /dev/fb0)\n\
|
-d Framebuffer device (default /dev/fb0)\n\
|
||||||
|
-i Show fixed and variable screen info\n\
|
||||||
|
-p Perform the panning of the display\n\
|
||||||
-h Show this help\n", appname);
|
-h Show this help\n", appname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,14 +111,28 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
// parse command line options
|
// parse command line options
|
||||||
fb_device = "/dev/fb0";
|
fb_device = "/dev/fb0";
|
||||||
|
bool show_info = false;
|
||||||
|
bool pan_display = false;
|
||||||
|
|
||||||
|
if (argc < 2)
|
||||||
|
{
|
||||||
|
usage(argv[0]);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
int opt;
|
int opt;
|
||||||
while ((opt = getopt(argc, argv, "d:h")) != -1)
|
while ((opt = getopt(argc, argv, "d:iph")) != -1)
|
||||||
{
|
{
|
||||||
switch (opt)
|
switch (opt)
|
||||||
{
|
{
|
||||||
case 'd':
|
case 'd':
|
||||||
fb_device = optarg;
|
fb_device = optarg;
|
||||||
break;
|
break;
|
||||||
|
case 'i':
|
||||||
|
show_info = true;
|
||||||
|
break;
|
||||||
|
case 'p':
|
||||||
|
pan_display = true;
|
||||||
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
default:
|
default:
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
|
@ -141,7 +158,8 @@ int main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
// print all the fixed screen info values
|
// print all the fixed screen info values
|
||||||
print_fix_screeninfo(&scr_fix);
|
if (show_info)
|
||||||
|
print_fix_screeninfo(&scr_fix);
|
||||||
|
|
||||||
// call ioctl. retrieve variable screen info
|
// call ioctl. retrieve variable screen info
|
||||||
if (ioctl(fb_fd, FBIOGET_VSCREENINFO, &scr_var) < 0)
|
if (ioctl(fb_fd, FBIOGET_VSCREENINFO, &scr_var) < 0)
|
||||||
|
@ -153,7 +171,20 @@ int main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
// print all the variable screen info values
|
// print all the variable screen info values
|
||||||
print_var_screeninfo(&scr_var);
|
if (show_info)
|
||||||
|
print_var_screeninfo(&scr_var);
|
||||||
|
|
||||||
|
if (pan_display)
|
||||||
|
{
|
||||||
|
// call ioctl. pan the display
|
||||||
|
if (ioctl(fb_fd, FBIOPAN_DISPLAY, &scr_var) < 0)
|
||||||
|
{
|
||||||
|
printf("Unable to pan the display: %s\n",
|
||||||
|
strerror(errno));
|
||||||
|
close(fb_fd);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// close the framebuffer device
|
// close the framebuffer device
|
||||||
close(fb_fd);
|
close(fb_fd);
|
||||||
|
|
Loading…
Reference in a new issue