Commit Graph

92 Commits

Author SHA1 Message Date
Greg Wallace ace7623306 Flag to enable jpg support
Builder using a custom theme may have need for this.  Add a flag to
easily enable jpg support.

Change-Id: Ica74f8cb1312d3193105f2201a5cf8073e2edc82
2016-02-03 05:15:10 +01:00
Ethan Yonker 31f855b5ad Change some graphics build flags
While not all of these old build flags are active or implemented
yet (and they may not ever be implemeted until we find a device
that needs them), we need to make sure that the old build flags
are only applied when actually needed. Since there are a lot of
device trees that probably won't get updated due to lack of device
maintainers, we will rename the build flags and fix up devices on
a case by case basis.

Also added some pixel format related build flags to the make file
from AOSP so that AOSP devices should work in TWRP without
additional build flags.

Change-Id: I11ab475297d02b6aeffe89404fe50b4799a36be3
2016-02-03 03:57:53 +01:00
Ethan Yonker 871b07f7b4 graphics: reintroduce flipped screens for fbdev
Change-Id: Ide3510d2efc1c1b39c756691776938e42424b61d
2016-02-01 10:31:59 -06:00
xadro 7509bc53ca Bring back option to flip screen for overlay devices
The driver already has the capability to do so.
It needs only to be flagged, if required.

Change-Id: I1d81b00a7499e493d1dbba0a440b45fc1202f7c1
2016-02-01 17:03:23 +01:00
Greg Wallace 62c188ca3d Fix minuitwrp include mistake
Change-Id: Iebb5763277eec83fd6db4fdca8b7ecfd3c78dc6b
2016-01-29 17:56:35 +01:00
Ziyan 4fea38a1d4 twrp: default to GGL_PIXEL_FORMAT_BGRA_8888 if vi.red.offset == 16
Change-Id: I436bab6ef679168d3625d8e1837917077cf89908
2016-01-29 03:02:47 +01:00
Ethan Yonker e95c4868b9 ifdef and comment out libjpeg
Chances are there are not many themes in widespread use that are
using jpeg images, but this will be easy to revert back or even
just temporarily modify if we need jpeg support in a pinch.

Change-Id: If17b05ce3ebccce724fd74b26ed8ea91b287c3cf
2016-01-27 10:58:02 -06:00
Ethan Yonker fbb4353a24 Update minuitwrp graphics in line with latest minui
Note: events.cpp is still old code renamed to cpp to make it
easier to call functions like gr_fb_width().

I had to modify AOSP fbdev code to provide a separate memory
surface for drawing to as drawing directly to the framebuffer
resulted in rendering taking about 5 times longer.

I also modified AOSP adf code to provide a separate memory surface
for drawing for the same performance reasons. The Nexus 9 supports
adf graphics.

Overlay graphics work on at least one device. Overlay provides a
separate memory buffer already so performance is good.

I do not have a drm device yet that I know of. I made some attempt
to update the drm code to determine the correct pixel format based
on the drm graphics format, but what is available in pixel flinger
and what is available in drm do not line up all that well. Reports
are that the Pixel C is using drm graphics, but performance is
slow, likely due to the use of a mmap instead of a memory buffyer.

Change-Id: Ibd45bccca6ac2cb826037aa9b2aa5065cf683eed
2016-01-27 10:53:13 -06:00
Ethan Yonker 2c80efa0c8 Update rules for libpixelfinger_twrp
Change-Id: I40131f330e902afab033e810761bf98c07bbd03d
2015-11-07 07:57:36 -06:00
Ethan Yonker b7a54a3016 Allow text to scale to fit
Change-Id: Iacd4bb78f551b51d092ecde09521b5541e7dadcd
2015-10-16 22:57:35 +02:00
Ethan Yonker 88037f476f Remove support for non-TTF fonts
This patch set removes support in TWRP for the old .dat file
format as well as support for the AOSP style fonts in header
files. We need TTF for scaling.

Note that the old AOSP style header font is still supported in
minui which is not used by TWRP.

Change-Id: I6124a3333d479f1fc668138f7e32c4be9b519552
2015-10-15 09:23:39 -05:00
Kra1o5 7756859abe Add support for RGBA_8888 pixel format
Change-Id: Ia15d49e51cad5bc8a3291975e1ff515a2b1c419c
2015-10-14 13:32:03 -05:00
Ethan Yonker c798c9cd24 Merge up to AOSP marshmallow-release
In order to maintain compatibility with older trees, we now have
minadbd.old and minui.old. I had to use a TARGET_GLOBAL_CFLAG to
handle ifdef issues in minui/minui.d because healthd includes
minui/minui.h and there was no other alternative to make minui.h
compatible with older trees without having to modify healthd rules
which is outside of TWRP.

Note that the new minui does not currently have support for qcom
overlay graphics. Support for this graphics mode will likely be
added in a later patch set. If you are building in a 6.0 tree and
have a device that needs qcom overlay graphics, be warned, as off
mode charging may not work properly. A dead battery in this case
could potentially brick your device if it is unable to charge as
healthd handles charging duties.

Update rules for building toolbox and add rules for making toybox

Use permissive.sh in init.rc which will follow symlinks so we do
not have to worry about what binary is supplying the setenforce
functionality (toolbox, toybox, or busybox).

Fix a few warnings in the main recovery binary source code.

Fix a few includes that were missing that prevented compiling in
6.0

Change-Id: Ia67aa2107d260883da5e365475a19bea538e8b97
2015-10-09 11:15:29 -05:00
Ethan Yonker d6821a11bb Add TW_IGNORE_ABS_MT_TRACKING_ID
Fixes touch on Oppo R7 Plus

Oppo R7 Plus, when recovery is flashed and booted from the actual
recovery partition, the digitizer sends some extra touch data for
up to 10 different touch slots even if no actual touch is present
for those slots (ABS_MT_SLOT). This patch allows TWRP to handle
touch data properly for this device and maybe others.

Change-Id: I8f9171b605566788b674b3d4d96bd9f2f65736c2
2015-08-26 22:36:34 +02:00
Kra1o5 c9556ccb5e Add flag to disable double buffering
Some devices don't support double buffering, so add
the flag TW_DISABLE_DOUBLE_BUFFERING to disable it

Change-Id: Ia9c233fa229ae9c221a6c6f219b216d1753052f4
2015-06-29 19:42:40 +02:00
jenkins 796991360d framebuffer: s6 edge takes a little lomger to initialize fb0
Change-Id: I48a5b25a227afb8637fcce7e4a1e2fc6bcc56b03
2015-06-17 23:39:37 +02:00
xiaolu 26ffa869d0 minuitwrp: fix crash when taking a screenshot.
when "gr_mem_surface.format = GGL_PIXEL_FORMAT_RGBA_8888", "gl->recti" will be crash.
this is a simple fix.

Change-Id: I39da7298286f34cdf7eae98f6b082c36695b222e
2015-06-17 23:26:24 +02:00
Xuefer 0eb2aab058 avoid possible dead loop for invalid utf8
Change-Id: Ida48b7ff119030312836aa109072ac4de7c5b9d6
2015-06-04 18:44:34 +02:00
ramsudharsan 8335324d2a minuitwrp: remove unused variable
Change-Id: I0beb3b349efd4f08491c92bb51c12caf3653cb73
Signed-off-by: ramsudharsan <ramsudharsanm@gmail.com>
2015-05-29 17:32:02 +02:00
Kra1o5 de50c5f552 Add option to use new heap_id_mask instead of old heap_mask
Use TW_NEW_ION_HEAP := true to use it

Change-Id: I2ad105fa6d122b460ed4b5dc78563077b7904567
2015-04-23 21:49:57 +02:00
Ethan Yonker 96bc6dddc6 Ingore touch events for 0,0
Change-Id: I63eb29d7a39956d92cb5da81c5cb4405930d43ae
2015-03-19 17:53:12 +01:00
Vojtech Bocek 54cf108c84 Fix invalid memory access when rendering a ttf glyph with 'left' < 0
* Fixes for example 'j' in Roboto-Regular

Change-Id: I0cf778c99f391900e164be743165cf8aad891020
Signed-off-by: Vojtech Bocek <vbocek@gmail.com>
2015-03-19 16:50:08 +01:00
Vojtech Bocek a482f25345 Fix deadlock in gr_ttf_measureEx if called before the height is cached
Change-Id: I2691e2ee4b272e7425d318b05404360598e2ea92
2015-03-19 16:46:13 +01:00
Ethan Yonker 4f6a976212 Make TWRP compile for x86-64 CPU target
Also add a short while loop to wait for fb0 to be created as was
needed on the x86-64 target for the Android emulator.

Change-Id: Ib1b87bea028ac3eac0541283334a0157cdfbce11
2015-03-13 17:20:57 +01:00
Ethan Yonker 591b920536 Reduce themes to 5 and rely on scaling
This will significantly reduce theme maintainence and should be a
lot more sustainable over time. Eliminate most themes leaving only
5 remaining in 3 categores:
 * watch_mdpi: 320x320
 * portrait_mdpi: 480x800
 * portrait_hdpi: 1080x1920
 * landscape_mdpi: 800x480
 * landscape_hdpi: 1920x1200

Add handling to map the old DEVICE RESOLUTION to the new TW_THEME
build flag. New devices should specify a theme using the new
TW_THEME build flag using one of the 5 values from the list above.
Long term we will eliminate the use of the DEVICE_RESOLUTION flag
in favor of the new flag.

Change the way sliders render so that they completely follow the
placement="5". This will probably break some custom themes but is
necessary so that we can retain the aspect ratio on slider images
and still have them rendered at the center of the screen.

Add code to the console slideout button so that it can be centered.
Centering the slideout button allows us to keep the button at the
center of the screen when retaining aspect ratios on the image.

Add more retain aspect ratios for home, back, slideout, folder,
file, and lock screen images.

Change the way we build the top bar in TWRP. It is now mostly
drawn using fill objects and the TWRP logo is a separate image so
that we can retain its aspect ratio during scaling. Thanks to Mark
Norelus for providing the TWRP logo.

Change-Id: I801a7b3163cad9ef353461f4c327690a9ccbb3aa
2015-03-12 18:41:34 -05:00
Vojtech Bocek 3041c887f1 Properly disable GGL_TEXTURE_2D after using it in minuitwrp
Change-Id: Ib100ccf3c8f6c622beb40b37ba3f61aad69d7d93
Signed-off-by: Vojtech Bocek <vbocek@gmail.com>
2015-03-11 08:01:30 -05:00
Vojtech Bocek db378b6cbb Implement gr_line() and gr_render_circle()
Change-Id: I63c8dcfa276bbeb550ca051a3a1a0646a2d07dc6
Signed-off-by: Vojtech Bocek <vbocek@gmail.com>
2015-03-11 07:59:15 -05:00
xiaolu e738da5e89 minuitwrp: fix crash issue, when the console use TTF font to display unicode font.
gui: fix terminal command unusual line breaks and missing characters at the end of a read buf.

Change-Id: I8d3d740b6066b1594c5148b2012f0e7bcbecc22b
2015-03-05 04:22:26 +01:00
Matt Mower 2b18a53dc8 Address a few compiler warnings
Change-Id: I6e063fba8d58c8c53da6bca6292c84e3392aee50
2015-03-05 04:11:44 +01:00
that 9876ac3361 gui: support scrollable lists without headers
If the <header> element doesn't exist, the header is not drawn.

- minuitwrp: add function for clipping all drawing to a rectangle
...and another one to cancel it.

Change-Id: If0f688a5debee6ebd9c457999fe571705a42c5cc
2015-02-15 22:12:29 +01:00
that c26ba0d344 minuitwrp: fix file descriptor leak in open_png
This fixes missing images after reloading the material theme 3 times.

Change-Id: I9af2a76b16e465fd2218e5f479c36a294590fa62
2015-02-13 01:09:55 +01:00
Ethan Yonker 727aeb8f70 Fix handling of GGLContext in res_scale_surface
Change-Id: I36eb1d5e4f6908bad5ebb1fec692d8510529a14c
2015-02-10 18:07:44 -06:00
Ethan Yonker 63e414fc8a Scale the GUI to fit the screen
With this patch set, if needed, we scale the images during early
boot. TTF support is needed to properly scale the font. No font
scaling is done on the old style fixed width font used in the
console.

Special thanks to _that for figuring out the scaling and blending
function calls to make this possible.

Change-Id: If2f79bef16d6db2e1298bfc3d00c9bcca2bee37a
2015-02-10 14:11:50 -06:00
that de72b6d4d8 gui: avoid high CPU usage while waiting for input
- add a timeout to ev_get
- set timeout to 1 second when idle
- delay timeout for 15 frames to keep animation objects working
- stop kinetic scrolling immediately at end of list

Change-Id: I77138055c464b65b71e296f9c7ef63ea06809bc1
2015-02-09 16:53:21 +01:00
that c5837f3997 gui: fix lag (and event logging)
- Process multiple input events per frame even if rendering takes longer
than 33 ms. Limit minimum frames per second to 2 instead, allowing us
to catch up with the input events. The lag was especially visible when
using the mouse.

- Move blankTimer calls to the main input function so that moving
the mouse also unblanks.

- Fix a compile error with event logging.

Change-Id: If9e0360f5cc0562c4356611afc61b6d583fb1ec4
2015-02-01 01:59:43 +01:00
Ethan Yonker e13fa63dc0 Move input handling into the main thread
This also makes the hardwarekeyboard.cpp file that I created for
the Asus Transformer tablets with a keyboard dock the default
hardware keyboard handler. USB keyboards should work properly now
if present for keyboard input.

Change-Id: I724606e91ffe2a55265a9d1cb1ec714de244d38b
2015-01-30 16:11:31 +01:00
Bogdan Seniuc d1372f732c Fixed screen flipping for devices where xres_virtual > xres
Change-Id: I3efc10e2c9759a358ded5b46f6125958e6d6bd66
2015-01-30 04:32:34 +01:00
Dees Troy 3454ade92d Use /twres instead of /res for theme resources
AOSP and other ROM trees now do a rm -rf of the res folder during
the ramdisk creation process that removes the TWRP resources.
Using /twres instead of /res works around this issue making TWRP
more compatible with AOSP and other build trees.

Change-Id: I0d4c7e06ca381ac5aa0069b6f2b8c47f7dec49e7
2015-01-22 15:21:27 -06:00
Ethan Yonker 32f68a3c92 Add TW_IGNORE_MT_POSITION_0 touch flag
This fixes touch on the a11 when fastboot booting the image. We
are also adding event logging for ABS_MT_POSITION data which we
should have been logging before but for some reason we did not.

Change-Id: I1b38c31c716efdcbe48db4faa5d0cef97c91c58e
2014-12-29 16:21:57 +01:00
Kra1o5 0024e3826b Add support for custom kernel headers
Change-Id: I39fe4de8919e59dd75e8cb535fa0648948035c26
2014-12-17 11:47:33 +01:00
Ethan Yonker ac21cb5ae3 Fix loading of png images in custom themes
Change-Id: I7eebc474c025eda534adb04d061795623ebecdda
2014-12-12 15:21:52 +01:00
soyu d5a7c0edf1 add support unicode font not only ascii
need to define custom theme(include custom ttf files)
  in device tree :

  TW_CUSTOM_THEME := device/xxxx/yyyy/recovery/res

  For example:
  https://github.com/twrp/android_device_xiaomi_armani

Change-Id: I6bebdfbdd75c99bfe216a8c0789af63c6fe4b9de
2014-12-09 21:14:48 +01:00
Ethan Yonker 448c8dc4c1 Fix png graphics load / display on AArch64
This is mostly kang from AOSP resources.c for loading png files
into RAM, but for ease of compatibility we retained the older
gr_surface data types throughout and ensured that we retain
support for alpha blended png files.

Change-Id: Ieea552173d3bfe885460407be73088bbad75663f
2014-12-09 04:46:00 +01:00
Ethan Yonker bcc502cff9 Make TWRP compile for arm64
-Remove dosfstools for arm64 until we can make it compile
-Fix TW_USE_TOOLBOX flag to work again
-Fix symlinking and handling of sh when using mksh
-Fix legacy properties to find futex_wake function
-Fix libcrecovery to not use bsd_signal anymore
-Fix rules for building with regards to libcrecovery
-Update toolbox_recovery rules to compile tools in lollipop
-Fix a few compile errors specific to arm64

Testers report that TWRP does not boot on Nexus 9 and we fail to
get a shell for adb shell. At least it compiles without errors.

Change-Id: I286be8628defb60cc527b8a548c0bdfcb0ebb574
2014-11-12 11:03:50 -06:00
Ethan Yonker 5a95c3ff41 Disable custom theme and fix png loading
We will have to update the zip handling later. Now at least TWRP
boots up to the GUI.

Change-Id: I4182896eb095cab52fb0f1c9c20b6605e35677b9
2014-11-07 13:33:07 -06:00
Ethan Yonker 304f32fa98 Fix up old libminui to compile
Implement some needed updates to libminui to make it compile for
healthd. Note that res_create_multi_display_surface is not fully
implemented so healthd may still have issues with displaying some
graphics. Will update later when we are able to test these changes.

Change-Id: Ic1095a998f5dfe7e36a08384c86da28e0524a03f
2014-11-07 10:14:08 -06:00
Dees Troy f171e103a8 Revert "Make libminuitwrp compile"
This reverts commit a27d02fab9.

Change-Id: I62d143044749f101cd70fef048057f896e46c208
2014-11-06 22:20:20 +01:00
Ethan Yonker a27d02fab9 Make libminuitwrp compile
Odds are this is horribly broken, but we are not able to work on
it just yet.

Change-Id: I8cd12a6dba7957b1ccc1275b8d72c24797856db0
2014-11-06 10:24:42 -06:00
Vojtech Bocek 76ee903d84 Add support for TrueType fonts
* Keeps original font system in place
* Uses the same API as original font system:
   - You can render only one line at a time
   - You can only use one font and color for one gr_text* call
* Caches all rendered text, with a string cache limited to 400
  entries, then it trucates to 250, which results in memory
  usage hovering around 5-10MB

Change-Id: I36107b9dcd8d57bae4486fce8b8f64e49ef3d906
Signed-off-by: Vojtech Bocek <vbocek@gmail.com>
2014-10-14 15:06:56 +02:00
Matt Mower 55c75cad80 Build block TWRP with RECOVERY_VARIANT
Enable TWRP to reside alongside other recoveries with the naming
convention: bootable/recovery(-flag). If TWRP resides at
bootable/recovery and a device does not specify RECOVERY_VARIANT, then
it will build like normal. If TWRP resides at bootable/recovery-twrp,
then its makefiles will only be parsed if a device specifies
'RECOVERY_VARIANT := twrp'. This prevents TWRP specific makefile
warnings/errors (notably, missing DEVICE_RESOLUTION) when another
recovery is being built.

Change-Id: I8f02fffcd79c309c7123b9428eedc69af02e126e
2014-09-03 10:53:37 -05:00