After installing Adobe PDF from Play it should ask download or open with.
Another PDF viewer can be used too.
Do more on the web, with a fast and secure browser!
Download Opera browser with:
After installing Adobe PDF from Play it should ask download or open with.
Another PDF viewer can be used too.
I agree that all text should be sized according settings. At this moment only certain text categories are re-sized.
For now this requires zoom by hand.
If you try Chrome or Firefox you find similar issues.
Opera does resize certain categories, Samsung re-sized all categories.
Opera has text reflow. Samsung does not.
@monikataware tasker can do that I do it with many apps but learning tasker is steep learning curve.
Hopefully opera settings will get an option to hide system taskbar.
@darvinya in the past holding that button opened a new tab, now another menu.
@monikataware you require Tasker from Google play, and time to learn how it works. I use it to make opera Fullscreen.
@monikataware you mean disabling status bar? That can be done with immersion app like tasker. But it's difficult.
Are you using Samsung multiple windows that show a circle?
Or Samsung dex?
@sirius16 unfortunately cannot get it to work while in other browser it does
Example, make a bookmark that contains this as address and name it scrolldown....
javascript:window.scrollTo(0,document.documentElement.scrollHeight)
In a long webpage using this bookmark should scroll down the entire page.
It did work in the past before chromium engine. In the opera presto engine days it did work.
Pasting this in address bar should have worked too....
javascript:window.scrollTo(0,document.documentElement.scrollHeight)
Officially fixed by disabling the "Android SurfaceControl" flag for Android 10 or higher in opera://flags
It's available in beta and official release now.
Besides that it works I actually wonder what Android SurfaceControl was supposed to do in chromium based browsers and why so many browsers had this problem.
Only people knowing how to access the flag for example now understand how to fix.
It's 7 months and even google themselves didn't fix it but here is technically info of the API introduction in Android 10
Android Open Source Project
Docs
GO TO CODE ➚
Search
Language
Aanmelden
DOCUMENTATION
Getting Started
Security
Core Topics
Compatibility
Android Devices
Reference
Filter
AOSP
Docs
Core Topics
Was this helpful?
Send feedbackSurfaceFlinger and WindowManager
SurfaceFlinger accepts buffers, composes buffers, and sends buffers to the display. WindowManager provides SurfaceFlinger with buffers and window metadata, which SurfaceFlinger uses to composite surfaces to the display.
SurfaceFlinger
SurfaceFlinger can accept buffers in two ways: through BufferQueue and SurfaceControl, or through ASurfaceControl.
One way SurfaceFlinger accepts buffers is through BufferQueue and SurfaceControl. When an app comes to the foreground, it requests buffers from WindowManager. WindowManager then requests a layer from SurfaceFlinger. A layer is a combination of a surface, which contains the BufferQueue, and a SurfaceControl, which contains the layer metadata like the display frame. SurfaceFlinger creates the layer and sends it to WindowManager. WindowManager then sends the surface to the app, but keeps the SurfaceControl to manipulate the appearance of the app on the screen.
Android 10 adds ASurfaceControl, which is another way that SurfaceFlinger can accept buffers. ASurfaceControl combines a surface and a SurfaceControl into one transaction package that is sent to SurfaceFlinger. An ASurfaceControl is associated with a layer, which apps update through ASurfaceTransactions. Apps then get information about ASurfaceTransactions through callbacks that pass ASurfaceTransactionStats containing information, such as latch time, acquire times, and so on.
Android Open Source Project
Docs
GO TO CODE ➚
Search
Language
Aanmelden
DOCUMENTATION
Getting Started
Security
Core Topics
Compatibility
Android Devices
Reference
Filter
AOSP
Docs
Core Topics
Was this helpful?
Send feedbackSurfaceFlinger and WindowManager
SurfaceFlinger accepts buffers, composes buffers, and sends buffers to the display. WindowManager provides SurfaceFlinger with buffers and window metadata, which SurfaceFlinger uses to composite surfaces to the display.
SurfaceFlinger
SurfaceFlinger can accept buffers in two ways: through BufferQueue and SurfaceControl, or through ASurfaceControl.
One way SurfaceFlinger accepts buffers is through BufferQueue and SurfaceControl. When an app comes to the foreground, it requests buffers from WindowManager. WindowManager then requests a layer from SurfaceFlinger. A layer is a combination of a surface, which contains the BufferQueue, and a SurfaceControl, which contains the layer metadata like the display frame. SurfaceFlinger creates the layer and sends it to WindowManager. WindowManager then sends the surface to the app, but keeps the SurfaceControl to manipulate the appearance of the app on the screen.
Android 10 adds ASurfaceControl, which is another way that SurfaceFlinger can accept buffers. ASurfaceControl combines a surface and a SurfaceControl into one transaction package that is sent to SurfaceFlinger. An ASurfaceControl is associated with a layer, which apps update through ASurfaceTransactions. Apps then get information about ASurfaceTransactions through callbacks that pass ASurfaceTransactionStats containing information, such as latch time, acquire times, and so on.
The following table includes more details about ASurfaceControl and its associated components.
Component Description
ASurfaceControl Wraps SurfaceControl and enables an app to create SurfaceControls that correspond to layers on the display.
Can be created as a child of ANativeWindow or as a child of another ASurfaceControl.
ASurfaceTransaction Wraps Transaction to enable the client to edit a layer's descriptive properties, such as geometry, and sends the updated buffers to SurfaceFlinger.
ASurfaceTransactionStats Sends information about transactions that have been presented, such as latch time, acquire times, and previous release fence, to an app through a preregistered callback.
Though apps can submit buffers at any time, SurfaceFlinger only wakes up to accept buffers between display refreshes, which can differ depending on the device. This minimizes memory usage and avoids visible tearing on the screen, which can occur when updating the display mid-refresh.
When the display is between refreshes, the display sends the VSYNC signal to SurfaceFlinger. The VSYNC signal indicates that the display can be refreshed without tearing. When SurfaceFlinger receives the VSYNC signal, SurfaceFlinger walks through its list of layers looking for new buffers. If SurfaceFlinger finds a new buffer, SurfaceFlinger acquires the buffer; if not, SurfaceFlinger continues to use the previously acquired buffer. SurfaceFlinger must always display something, so it hangs on to one buffer. If no buffers have ever been submitted on a layer, the layer is ignored.
After SurfaceFlinger has collected all buffers for visible layers, it asks the Hardware Composer (HWC) how composition should be performed. If the HWC marks layer composition type as client composition, SurfaceFlinger composites those layers. Then, SurfaceFlinger passes the output buffer to the HWC.
Android Open Source Project
Docs
GO TO CODE ➚
Search
Language
Aanmelden
DOCUMENTATION
Getting Started
Security
Core Topics
Compatibility
Android Devices
Reference
Filter
AOSP
Docs
Core Topics
Was this helpful?
Send feedbackSurfaceFlinger and WindowManager
SurfaceFlinger accepts buffers, composes buffers, and sends buffers to the display. WindowManager provides SurfaceFlinger with buffers and window metadata, which SurfaceFlinger uses to composite surfaces to the display.
SurfaceFlinger
SurfaceFlinger can accept buffers in two ways: through BufferQueue and SurfaceControl, or through ASurfaceControl.
One way SurfaceFlinger accepts buffers is through BufferQueue and SurfaceControl. When an app comes to the foreground, it requests buffers from WindowManager. WindowManager then requests a layer from SurfaceFlinger. A layer is a combination of a surface, which contains the BufferQueue, and a SurfaceControl, which contains the layer metadata like the display frame. SurfaceFlinger creates the layer and sends it to WindowManager. WindowManager then sends the surface to the app, but keeps the SurfaceControl to manipulate the appearance of the app on the screen.
Android 10 adds ASurfaceControl, which is another way that SurfaceFlinger can accept buffers. ASurfaceControl combines a surface and a SurfaceControl into one transaction package that is sent to SurfaceFlinger. An ASurfaceControl is associated with a layer, which apps update through ASurfaceTransactions. Apps then get information about ASurfaceTransactions through callbacks that pass ASurfaceTransactionStats containing information, such as latch time, acquire times, and so on.
The following table includes more details about ASurfaceControl and its associated components.
Component Description
ASurfaceControl Wraps SurfaceControl and enables an app to create SurfaceControls that correspond to layers on the display.
Can be created as a child of ANativeWindow or as a child of another ASurfaceControl.
ASurfaceTransaction Wraps Transaction to enable the client to edit a layer's descriptive properties, such as geometry, and sends the updated buffers to SurfaceFlinger.
ASurfaceTransactionStats Sends information about transactions that have been presented, such as latch time, acquire times, and previous release fence, to an app through a preregistered callback.
Though apps can submit buffers at any time, SurfaceFlinger only wakes up to accept buffers between display refreshes, which can differ depending on the device. This minimizes memory usage and avoids visible tearing on the screen, which can occur when updating the display mid-refresh.
When the display is between refreshes, the display sends the VSYNC signal to SurfaceFlinger. The VSYNC signal indicates that the display can be refreshed without tearing. When SurfaceFlinger receives the VSYNC signal, SurfaceFlinger walks through its list of layers looking for new buffers. If SurfaceFlinger finds a new buffer, SurfaceFlinger acquires the buffer; if not, SurfaceFlinger continues to use the previously acquired buffer. SurfaceFlinger must always display something, so it hangs on to one buffer. If no buffers have ever been submitted on a layer, the layer is ignored.
After SurfaceFlinger has collected all buffers for visible layers, it asks the Hardware Composer (HWC) how composition should be performed. If the HWC marks layer composition type as client composition, SurfaceFlinger composites those layers. Then, SurfaceFlinger passes the output buffer to the HWC.
WindowManager
WindowManager controls window objects, which are containers for view objects. Window objects are always backed by surface objects. WindowManager oversees lifecycles, input and focus events, screen orientation, transitions, animations, position, transforms, z-order, and many other aspects of a window. WindowManager sends all of the window metadata to SurfaceFlinger so SurfaceFlinger can use that data to composite surfaces on the display.
Pre-rotation
Many hardware overlays don't support rotation (and even if they do, it costs processing power); the solution is to transform the buffer before it reaches SurfaceFlinger. Android supports a query hint (NATIVE_WINDOW_TRANSFORM_HINT) in ANativeWindow to represent the most likely transform to be applied to the buffer by SurfaceFlinger. GL drivers can use this hint to pre-transform the buffer before it reaches SurfaceFlinger so that when the buffer arrives, it's correctly transformed.
For example, when receiving a hint to rotate 90 degrees, generate and apply a matrix to the buffer to prevent it from running off the end of the page. To save power, do this pre-rotation. For details, see the ANativeWindow interface defined in system/core/include/system/window.h.`
@avmon might be regulation rules of Google play because Opera has wallet function which I don't use but some do. Google is very strict.
@pierre-maraval by ip adres on your local network, like the ip of your router.
127.0.0.1 is your device ip for example but if it has no server it will not respond.
Try to find ip of your router with network scanner app from Google play. Other devices will show too. With their ip address.
@alex-gtv you need Opera Desktop for mac Linux or windows and synchronized with your mobile, there you can organize or backup your bookmarks. Like right click a folder and sorting alphabetically. Optional you can export bookmarks with desktop version to standard browser bookmarks format. I cannot recommend Samsung internet browser since it cannot import or export.
@ginger1984 good news considering battery usage. It's the same as other browsers, in my case 10,2 % per hour of screen on browsing. Only it's fluently now. This reply is added to see if side effects were existing.
(Galaxy tab s5e android 11)
@johndoe72092 install Opera Desktop for mac, Linux or windows. There you can backup bookmarks and tab history if you have synchronized with the same Opera account, optional are password sync to. You can only backup bookmarks outside, but synchronized tabs can be opened and continued, passwords I don't know.
@miyukiwork it works and is fluently scrolling in last beta after setting flag as disabled. As far as I know only Android 10 and later devices are affected. Hopefully this reaches normal version too.
Tab s5e Android 11 needs this flag disabled. WORKS!
Galaxy S8 Android 9 does not use this flag, since it's android 10 or later that are affected.
Thanks for your team.
@lostmycards maybe Opera desktop version with a pc can rescue something. It requires a PC with windows or Linux.
Before connecting you need to understand how Opera desktop version works, practice with it.
Then with Opera desktop login to syncing it requires you to do 2 things.
1 password
2 password phrase
Many people don't understand that without the 1 and 2 it works only but ask why it doesn't work after 1.
@inkvizitor install Opera desktop version and login to see, don't forget that with mobile you need:
1 Password
2 Password phrase
I think you didn't input 2, the password phrase.
Eventually anyway you will have to organize bookmarks at that large amounts with Opera desktop version. The first thing to do is back up that many bookmarks especially the quick dials which are bound to a specific new installation. With desktop opera syncing, then export all to a .html backup. Then clicking folders selecting sort alphabetically, also doubles after alphabetically sorting show next each other and can easily be sorted out. Make sure before this many bookmarks sorting with desktop version of Opera to have the backup. It's best to do this once a year or so.
@lostmycards am sorry, I think bookmarks exist to do what you would have needed. If it were open tabs you would loose them eventually anyway no matter what browser. You looked in your browsing history you explained.